繁体   English   中英

在TimeZone中使用strtotime

[英]Using strtotime with TimeZone

我有个问题。 我想将此DateTime: 2018-10-28 02:00:00转换为TimeStamp。 现在我正在寻找的时间戳是: 1540684800 ,但是使用我的代码,我得到了这个时间戳: 1540688400 我知道它与我的TimeZone有关,但是我不知道该如何解决。 我住在阿姆斯特丹的荷兰。 这是我的代码:

$LoopDateTime = "2018-10-28 02:00:00";
$search_key = (strtotime($LoopDateTime)*1000);

有人能帮我吗?

阿姆斯特丹的时区标识符是Europe/Amsterdam1540688400 正确的时间戳。 肯定有一个在线工具可以检查,但您也可以从PHP本身进行验证:

$date = new DateTime("@1540688400");
$date->setDateTimeZone(new DateTimeZone('Europe/Amsterdam'));
echo $date->format('r'); // Sun, 28 Oct 2018 02:00:00 +0100

但是,您的代码并不健壮,因为取决于配置的时区。 您可以通过多种方式对其进行显式设置,例如:

$LoopDateTime = "2018-10-28 02:00:00";
$search_key = strtotime($LoopDateTime . ' Europe/Amsterdam') * 1000;
var_dump($search_key); // int(1540688400000)

要么:

date_default_timezone_set('Europe/Amsterdam');
$LoopDateTime = "2018-10-28 02:00:00";
$search_key = strtotime($LoopDateTime) * 1000;
var_dump($search_key); // int(1540688400000)

附注:如果我没记错的话,那么大多数欧洲刚刚从CEST(+0200)切换到CET(+0100)的确切时间就是2018年10月28日 (星期日)02:00:00 +0100

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM