在更改日期格式时显示错误的时间

时间:2013-09-09 06:23:25

标签: php datetime

我正在更改日期格式,它显示格式错误

echo $punch_in_time;
// Prints 2013-09-09 11:40:00

echo $new_date = gmdate('D, M-d-Y h:i a',strtotime($punch_in_time)); 
// Prints Mon, Sep-09-2013 09:40 am (Notice the wrong time)

我还尝试在显示时间之前设置时区,但没有效果。 我不知道为什么会发生这种情况,我必须将时间显示为Mon, Sep-09-2013 11:40 am而不是Mon, Sep-09-2013 09:40 am

2 个答案:

答案 0 :(得分:2)

在使用功能之前,请务必阅读说明/手册。

在gmdate()的描述中说“格式化GMT / UTC日期/时间”,这意味着它假设您输入的日期是在本地时区(从GMT + 2的时差判断?)gmdate然后将其转换为GMT + 0时区的日期格式。

要确保时区*在输入和输出之间是一致的,请改用date()。

*这会将日期时间转换为您当地的时区,这可能不是您所需要的。

echo $new_date = date('D, M-d-Y h:i a',strtotime($punch_in_time)); 

答案 1 :(得分:1)

gmdate()date()函数相同,但返回的时间是格林威治标准时间

使用此代替

echo $new_date = date('D, M-d-Y h:i a',strtotime($punch_in_time));