2010-11-16 3 views
11

Мне нужно прочитать 2 даты и сравнить их.Где лучше всего сравнить даты в Perl?

Одна дата - текущая_дана (год, месяц, дата) другая определяется бизнес-логикой. Мне нужно сравнить 2 даты и посмотреть, находится ли кто-то другой.

Как я могу сделать то же самое в Perl?

Я ищу хорошую документацию, но я нахожу так много модулей даты в Perl. Не знаю, какой из них подходит.

+0

Возможно, вас заинтересует это предложение по обмену столами (http://area51.stackexchange.com/proposals/11464/code-review?referrer=aWNm_PdciyFqjFW8CUacGw2 «обзор кода»). Он почти готов начать бета-тестирование, просто нужно еще несколько. – greatwolf

ответ

18

Один из самых популярных модулей даты - DateTime, который будет обрабатывать все угловые шкафы и другие проблемы, связанные с математикой.

Эта ссылка является FAQ для DateTime, которые могут помочь вам начать работу:

Путем DateTime модуль работает в том, что вам конвертировать даты (которые предположительно будут строки) в DateTime объектов, которые затем можно сравнить, используя один из методов DateTime.

В приведенных ниже примерах $dt1 и $dt2 находятся DateTime объектов.

$days является дельта между двумя датами:

my $days = $dt1->delta_days($dt2)->delta_days; 

$cmp равен -1, 0 или 1, в зависимости от того, $dt1 меньше, равно или больше, чем $dt2.

my $cmp = DateTime->compare($dt1, $dt2); 
+11

Одна из многих приятных вещей в DateTime - полная перегрузка оператора - например, вы можете сравнить два объекта DateTime как 'if ($ dt1 <$ dt2) {...}' – Ether

27

Если даты ISO-8601 (т.е. YYYY-MM-DD) и вам не нужно, чтобы проверить их, вы можете сравнить лексикографически (т.е. lt и gt операторы.)

Если вы необходимо проверить даты, управлять датами или анализировать нестандартные форматы - использовать модуль CPAN. Лучшие, ИМХО, являются DateTime и DateCalc. Date-Simple тоже очень хорошо.

Хорошее место для начала поездки - читать The Many Dates of Perl и DateTime site.

Смежные вопросы