Intereting Posts
неожиданное «использование» (T_USE) при попытке использовать композитор Несоответствие типа данных в выражении критериев с использованием Access через ODBC PHP-запрос Почему некоторые значения в моем массиве не определены? Преобразование IP-адреса в десятичный и наоборот REGEX для маскировки всех символов, кроме первого и последнего символов Как немедленно выполнить анонимную функцию в PHP? вызов функции javascript из php Laravel: Перенаправить в пользовательский класс? Неопределенный индекс HTTP_HOST, даже если он проверен Используя htmlspeciachars на выходе из базы данных (MySQL), что еще следует учитывать для предотвращения XSS? Как динамически изменять адрес PayPal в Woocommerce? JQGrid, Как разместить строку JSON для PHP для обработки и отправки в базу данных? Всплывающее окно «Перевод языка» отсутствует в DOM, готовом в браузере: Laravel 5.2 Как добавить несколько строк в Zend_Db?

Convert 2010-04-16 16:30:00 до «Завтра во второй половине дня»

Convert 2010-04-16 16:30:00 до «Tomorrow Afternoon» или конвертировать другую дату в «сегодня днем», «в следующем году», «на следующей неделе». Вы получите картину. Кто-нибудь знает библиотеку PHP или Javascript, которая может это сделать?

Я думаю, вы можете пройти долгий путь с тем, что сказано здесь: Рассчитать относительное время в C #
Логика есть, и это не слишком сложно сделать эквивалент javascript, если вам подходит решение на другом языке.

Там могут быть более элегантные решения (искать форматирование на естественном языке), но лично я не мог найти их.

Я бы предложил рассчитать расстояние now до даты форматирования и использования пороговых значений.

Псевдорешение:

 diff = now - date if (diff < one_day) format for today if (diff < two_days) format for tomorrow if (diff < one_week) format using days from now . . . 

Сравнение будет работать как для прошлых, так и для будущих дат, если вы используете сравнение с значением abs для diff . Показывать время или время с момента проверки, если diff положителен или отрицателен.

Для утреннего, дневного, вечернего и т. Д. Вам нужно только проверить время дня в день, а также о том, какой тип форматирования вы нажмете, либо отобразить время как цифры (далеко), либо естественный язык (недавний или ближайший день) ).

Из этой ссылки -> Как рассчитать относительное время?

 function posted(t) { var now = new Date(); var diff = parseInt((now.getTime() - Date.parse(t)) / 1000); if (diff < 60) { return 'less than a minute ago'; } else if (diff < 120) { return 'about a minute ago'; } else if (diff < (2700)) { return (parseInt(diff / 60)).toString() + ' minutes ago'; } else if (diff < (5400)) { return 'about an hour ago'; } else if (diff < (86400)) { return 'about ' + (parseInt(diff / 3600)).toString() + ' hours ago'; } else if (diff < (172800)) { return '1 day ago'; } else {return (parseInt(diff / 86400)).toString() + ' days ago'; } 

}

  function gett($sam){ $times = time() - $sam; if ($times == 60){ $times = "a minute ago"; } if (($times != 1) && ($times < 60) && ($times != 0)){ $times = "$times seconds ago"; } if ($times == 0){ $times = "less than a second ago"; } if ($times == 1){ $times = "a second ago"; } if ($times > 60 && $times < 3600){ $times = ceil($times/60)." minutes ago"; } if($times == 3600){ $times = "an hour ago"; } if($times > 3600 && $times < 86400){ $times = ceil($times/3600)." hours ago"; } if($times == 86400){ $times = "a day ago"; } if($times > 86400){ $times = ceil($times/86400)." days ago"; } return $times; } 

Использование: $ updated = gett ($ timestamp); где $ timestamp довольно понятна.