Я ищу библиотеку (open source), такую как Joda-Time в мире Java. Есть ли такая библиотека?
Joda-Time очень полезно для расчета даты и времени. Я могу добавлять дни, недели, месяц, год, а также легко конвертировать даты и время.
Мне жаль, что в PHP отсутствует библиотека Joda-Time.
Изменить: мне нужны некоторые функции, доступные в Joda-Time, например daysBetween (для расчета количества дней между двумя датами), monthsBetween и weeksBetween … Некоторые функции о дате добавления и вычитания доступны из самого PHP.
Это то, что вы ищете: https://github.com/briannesbitt/Carbon
Я не знаком с Джодой, но вы заглянули в DateTime ? Он делает все, что вы упомянули (и еще несколько).
strtotime
и date
иногда могут творить чудеса, особенно если вы работаете с датами> = 1970 (то есть, которые могут быть закодированы как временная метка UNIX) .
Если вы используете достаточно современную версию PHP, класс DateTime
(добавленный в PHP 5.2, но несколько методов были добавлены в PHP 5.3) также может оказаться полезным – другие классы Date и Time также могут помочь.
Вы можете попробовать эту библиотеку для PHP. Дата и время. http://nuclearscripts.com/php/scripts-and-programs/date-and-time/php-date-library.html.
Цитата оттуда
PHP Date Library – это набор профессиональных собственных функций PHP для работы с датами. Он не требует каких-либо расширений PHP. Эта библиотека включает в себя большинство полезных функций для работы с датами. Он включает функции для проверки даты, даты перехода на заданное количество дней, расчета разницы между двумя датами, расчета номера недели для данной даты и многого другого. Он правильно обрабатывает високосные годы и совместим с ISO. Профессиональный программист провел 3+ дня, чтобы изучить предмет, закодировать библиотеку, написать руководство и поместить все это здесь.
Я не проверял его лично.
Я знаю компонент Zend Framework : Zend_Date. Он отлично работает для этой работы.
Я не уверен, но вы можете использовать его без всей Framework.
Zend Date
Во внешней библиотеке нет необходимости. PHP более чем способен на это уже.
<?php /** These examples work with the current time **/ echo strtotime("now"), "\n"; echo strtotime("10 September 2000"), "\n"; echo strtotime("+1 day"), "\n"; echo strtotime("+1 week"), "\n"; echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n"; echo strtotime("next Thursday"), "\n"; echo strtotime("last Monday"), "\n"; /** This is a made up time **/ $lessMonth = strtotime("06/19/1986 3:00PM") $lessMonth = strtotime("-1 month", $lessMonth); echo $lessMonth, "\n"; echo gmdate('c', $lessMonth); /** 86 400 seconds in a day */ $daysBetween = (strtotime("now") - $lessMonth) / 86400 ?>