将欧洲日期转换为UNIX,同时考虑时区和夏令时?

时间:2014-05-25 19:10:17

标签: php date unix

对于一组过去的事件,我的日期格式如下:

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,同时考虑到每年夏季时间在不同的日期开始?

1 个答案:

答案 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;