2014-11-02 68 views
1

我使用下面的代码格式化PHP的一个日期不同的日期:获取格式化

$date = "2014-11-01"; 
$date_formatted = gmdate("Y-m-d", strtotime($date)); 

当我打印出来,格式化的日期去一天回来。我很惊讶。我不是简单地寻找解决方案(有很多这样的简单的东西)。 我想知道这是怎么发生的。

echo $date . " ---> " . $date_formatted;  
//Displays: 2014-11-01 ---> 2014-10-31 
+0

似乎对我很好:http://codepad.org/rTXAEHLT – 2014-11-02 04:28:43

+1

看到这个:http://codepad.org/L7YzM3jN – Evert 2014-11-02 04:32:13

回答

6

这是因为你用gmdate。这会根据提供的时间戳为您提供格林尼治标准时间的日期。

strtotime将不是默认情况下使用GMT,而是使用您当地的时区。因此,当您拨打gmdate时,它会通过您的时区偏移减少日期和时间。

若要解决此问题,请使用date而不是gmdate或将系统的时区设置为UTC。