如果我有带时区的时间戳,如何获取时间戳是否早于一天



我有带时区的时间戳,可能是这种格式:Weekday, d Month yyyy H:i:s +timezone例如:Fri, 28 Feb 2020 19:18:26 +010Sat, 29 Feb 2020 21:57:00 +010如果它超过一天,我该如何获取?

您可以使用preg_match从日期中提取时区,例如

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

然后根据日期字符串和根据时区调整的当前时间创建DateTime对象。如果我们从当前时间减去一天,并比较这两个日期,我们就可以确定日期是否在一天前:

$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 agon";
}

产量(截至3月1日(:

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

3v4l.org 上的演示

你的意思是这样的:date('d.m.Y',strtotime("-1 days"));

最新更新