如何在php中基于EST计算历元时间

如何在php中基于EST计算历元时间,php,Php,我试图将今天与$Time变量结合起来,我将从其他地方获得$Time变量,cobinetoday和Time,然后将它们转换为epoch 这就是我所拥有的: $Time='16:26:00'; $now = new DateTime(null, new DateTimeZone('EST')); $today=$now->format('Y-m-d'); $today= $today . ' '. $Time; $today=new DateTime($today, new DateTimeZ

我试图将今天与$Time变量结合起来,我将从其他地方获得$Time变量,cobinetoday和Time,然后将它们转换为epoch

这就是我所拥有的:

$Time='16:26:00';
$now = new DateTime(null, new DateTimeZone('EST'));
$today=$now->format('Y-m-d');
$today= $today . ' '. $Time;
$today=new DateTime($today, new DateTimeZone('EST'));
$today=date_format($today, 'U');
$today=$today*1000;

当我回显“今天”时,我得到的时间戳比我早4个小时,你知道我在这里可能遗漏了什么吗?

Unix时间总是以UTC计算的(请参阅),因此看起来
date\U格式($today,'U')
正在将时区调整回UTC

如果要使用时区修改unix时间戳,可以使用从UTC获取时区偏移量。此值以秒为单位,因此您可以将其添加到unix时间戳中

请注意,结果将不再是unix时间戳


如果你只需要处理EST,你可以减去
18000
秒(或
14400
秒的EDT)。

作为旁白,意识到“EST”在一年中的大部分时间都会产生错误的时间。如果您需要了解时区,请查看“如果我这样做,#$today=$today->getOffset($today)”;它正在重置为1970
getOffset
提供两个时区之间的偏移量,因此您需要执行
$todayInGMT->getOffset($todayInEST)
以获得正确的值。然后需要手动执行减法。如果您尝试使用
'U'
格式化结果,它将返回GMT。