对于一组过去的事件,我的日期格式如下:
year-m-day hour:second
e.g. 2014-05-25 20:41
这些日期基于布鲁塞尔时间(GMT + 1小时+(夏令时1小时))。
我正在尝试计算自事件开始以来已经过了多少时间,取决于此日期/时间并将其从当前日期/时间中删除,如下所示:
$current_time = time();
$event_time = date('2014-05-25 20:41');
echo ($current_time - $event_time)
但是,由于时区,日期比Unix时间早两个小时。
是否有一种简单的方法可以准确地将布鲁塞尔夏季时间转换为Unix,同时考虑到每年夏季时间在不同的日期开始?
答案 0 :(得分:0)
您可以设置时区并使用DateTime::diff()功能和DateInterval::format():
date_default_timezone_set('Europe/Brussels');
$dateNow = new DateTime();
$dateBefore = new DateTime('2014-05-25 20:41') ;
$interval = $dateNow->diff($dateBefore);
echo $interval->format('%h hours %i min ago') . PHP_EOL;
显示:
0 hours 37 min ago
要将日期转换为unix时间DateTime::format('U')或DateTime::getTimestamp(),请执行以下操作:
echo $dateNow->format('U') . PHP_EOL
echo $dateNow->getTimestamp() . PHP_EOL;