【发布时间】:2019-03-29 23:01:50
【问题描述】:
我有一个简单的问题要问你。我在 php 中有一个 unix 时间戳变量,我称之为 $unix,它包含当前的 unix 时间戳(1/1/1970 00:00:00 UTC 之后经过的秒数),根据定义,它是 UTC 时间。我想将其转换为 CET 时间的日期字符串,例如“29/03/19 14:50”。拥有 CET 格式对我来说至关重要,而不是在夏令时 (DST) 开始时更改。换句话说,我想要的日期是 DST 之外的 UTC+1,并且在 DST 期间,这必须自动完成。 我正在考虑使用这个功能:
date_create_from_format ( string $format , string $time [, DateTimeZone $timezone ] )
所以我应该这样写:
date_create_from_format ('d/m/y h:i' , $unix, 'CET');
我错了吗?不能说服我的是,在this page 中清楚地写道:
当 time 参数包含 UNIX 时间戳(例如 946684800)或指定时区(例如 2010-01-28T15:00:00+02:00)时,将忽略 timezone 参数和当前时区。
有没有办法做我想做的事? 谢谢!
【问题讨论】:
-
date_create_from_format()的第三个参数是一个 DateTimeZone 对象。您不能将字符串'CET'传递给它。 -
好的,我写了
date_create_from_format('U',time(),new DateTimeZone('CET'))->format('d/m/y h:i'),它给了我 29/03/19 01:47,而它应该是 29/03/19 14:47!请注意,这与我写date_create_from_format('U',time())->format('d/m/y h:i')时的结果相同。 -
h是 12 小时格式,你想要H... -
04FS 谢谢!!有问题!现在我解决了:
date_create_from_format('U',time()+3600)->format('d/m/y H:i');这完美地返回了 CET 时间