Как получить, если метка времени старше дня, если у меня есть метки времени с часовыми поясами? - PullRequest
0 голосов
/ 01 марта 2020

У меня есть временные метки с часовым поясом, может быть в следующем формате: Weekday, d Month yyyy H:i:s +timezone, например: Fri, 28 Feb 2020 19:18:26 +010 или Sat, 29 Feb 2020 21:57:00 +010 Как я могу получить информацию, если она старше дня?

Ответы [ 2 ]

0 голосов
/ 01 марта 2020

Вы можете извлечь часовой пояс из вашей даты, используя preg_match например,

$tz = preg_match('/([+-]\d+)$/', $datestr, $m) ? $m[0] : '';

, а затем создать DateTime объекты из вашей строки даты и текущего времени, скорректированного с учетом часового пояса. Если затем мы вычтем один день из текущего времени и сравним две даты, мы сможем определить, является ли эта дата более чем одним днем ​​a go:

$datestr = 'Fri, 28 Feb 2020 19:18:26 +010';
$date = new DateTime($datestr);
$tz = preg_match('/([+-]\d+)$/', $datestr, $m) ? $m[0] : '';
$now = new DateTime(date('Y-m-d H:i:s ' . $tz));
$now->modify('-1 day');
if ($now > $date) {
    echo "$datestr is more than 1 day ago\n";
}

Вывод (по состоянию на 1 марта):

Fri, 28 Feb 2020 19:18:26 +010 is more than 1 day ago

Демонстрация на 3v4l.org

0 голосов
/ 01 марта 2020

вы имеете в виду что-то вроде этого: date('d.m.Y',strtotime("-1 days"));

...