Подтвердить что ты не робот

Что лучший способ сравнить даты в Perl?

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

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

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

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

4b9b3361

Ответ 1

Один из самых популярных модулей даты - 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

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

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

Хорошим местом для начала вашего путешествия является читать The Many Dates of Perl и сайт DateTime.

Ответ 3

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