на главнуюВсе эхи RU.PERL
войти ?

Re: сравнение даты и времени

От Eugene Grosbein (2:5006/1) к Ruslan Suleimanov

В ответ на Заголовок предыдущего сообщения в треде (Имя Автора)


04 авг. 2022, четверг, в 15:11 NOVT, Ruslan Suleimanov написал(а):

RS> Есть дата и время именно в таком формате "Thu, 04 Aug 2022 12:50:30
RS> +0300"(которая может меняться) в переменной $a1 необходимо сравнить ее с
RS> переменной $b1
RS> и вывести например print "Old"; если переменная $b1 позже по дате и времени $a1
RS> и print "New"; если раньше по дате и времени.

Стандартный подход в таких случаях - перевод сравниваемых дат
в формат целого числа под названием unixtime - количество
секунд, прошедших с полуночи 1 января 1970 года (отрицательное число,
если дата до этого момента). Затем значения просто сравниваются,
как целые числа.

Для перевода есть готовые модули типа Date::Parse с функцией
$unixtime = str2time($string);

В доке на этот модуль описаны автоматически распознаваемые форматы дат
и твой формат среди них есть (четвертый пример):

EXAMPLE DATES
Below is a sample list of dates that are known to be parsable with
Date::Parse

1995:01:24T09:08:17.1823213 ISO-8601
1995-01-24T09:08:17.1823213
Wed, 16 Jun 94 07:29:35 CST Comma and day name are optional
Thu, 13 Oct 94 10:13:13 -0700
Wed, 9 Nov 1994 09:50:32 -0500 (EST) Text in ()'s will be ignored.
21 dec 17:05 Will be parsed in the current time zone
21-dec 17:05
21/dec 17:05
21/dec/93 17:05
1999 10:02:18 "GMT"
16 Nov 94 22:28:20 PST

Так что просто делаешь use Date::Parse;
и используешь str2time() для преобразование своей строки в целое и
потом просто сравниваешь целые.

Eugene
--
Комбинация заискивания, подкупа и устрашения заставит молодого ученого
работать над управляемыми снарядами или атомной бомбой. (Hорберт Винер)
--- slrn/1.0.3 (FreeBSD)
* Origin: RDTC JSC (2:5006/1@fidonet)

Ответы на это письмо:

From: Username
Заголовок следующего сообщения в треде может быть длинным и его придется перенести на новую строку

From: Username
Или коротким

FGHI-url этого письма: area://RU.PERL?msgid=grosbein.net+c9f30887