Какой лучший способ сравнить даты в Perl? - PullRequest
12 голосов
/ 17 ноября 2010

Мне нужно прочитать 2 даты и сравнить их.

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

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

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

Ответы [ 3 ]

33 голосов
/ 17 ноября 2010

Если даты ISO-8601 (т. Е. ГГГГ-ММ-ДД) и вам не нужно проверять их, вы можете сравнить лексикографически (т. Е. Операторы lt и gt.)

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

Хорошее место для начала вашего путешествия - прочитать Множество дат Perl и сайт DateTime .

21 голосов
/ 17 ноября 2010

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

Эта ссылка является часто задаваемыми вопросами для 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);
2 голосов
/ 17 ноября 2010

Date :: Manip - очень хороший модуль для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...