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
Или коротким