2016-08-01 41 views
1

我有以下几行代码,我将edt时区转换为亚洲/上海(从PHP手册),然后格式化显示为一个字符串。现在,如果我在datetime obj上执行var_dump或getTimezone(),我会得到类似(2)的内容,这是正确的。但是在字符串中,它仍然将edt显示为时区。不知道为什么它这样做..任何人都体验到这一点?有什么想法?谢谢! (1)$ format ='Y-m-d H:i:s';strtotime不从日期时间正确的时区对象

$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) 

回答

2

这是因为你使用->format输出时间没有时区的字符串,然后使用date()重新格式化,这是撤消您尝试设置的任何时区设置。

你可以做$display = $datetime->format('l jS F Y \a\t\ g:ia T');

+0

谢谢!不知道我是如何错过那条愚蠢的线路,试图结合太多不同的堆栈溢出结果:P – nick