我有带时区的时间戳,可能是这种格式:Weekday, d Month yyyy H:i:s +timezone
例如:Fri, 28 Feb 2020 19:18:26 +010
或Sat, 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"));