我有以下几行代码,我将edt时区转换为亚洲/上海(来自php手册),然后格式化为字符串显示。现在,如果我在datetime obj上执行var_dump或getTimezone(),我会得到类似于(2)的东西,这是正确的。但在字符串中,它仍然显示edt作为时区。不知道为什么会这样做..其他人经历过这个吗?有什么想法吗?谢谢!
(1)$ format =' Y-m-d H:i:s&#39 ;;
$datetime = datetime::createfromformat($format,$appointment['appointment_datetime']);
///patient default shows time in China Standard
$datetime = $datetime->setTimezone(new DateTimeZone('Asia/Shanghai'));
$display = date('l jS F Y \a\t\ g:ia T', strtotime($datetime->format($format)));
(2)对象(日期时间)[8]
public 'date' => string '2016-08-02 05:00:00.000000' (length=26)
public 'timezone_type' => int 3
public 'timezone' => string 'Asia/Shanghai' (length=13)
答案 0 :(得分:2)
这是因为您使用->format
将时间输出为没有时区的字符串,然后使用date()
重新格式化它,这会撤消任何时区设置试图设置。
您可以$display = $datetime->format('l jS F Y \a\t\ g:ia T');