Php将日期时间转换为标准时间,如“2017-01-10T18:00:00.000Z”。
Php将日期时间转换为标准时间,如“2017-01-10T18:00:00.000Z”。
我从另一台服务器收到了一个带有日期时间的响应,格式如下:
"2017-01-10T18:00:00.000Z"
我想将其转换为标准的日期时间格式,应该如何做?
"2017-01-10 18:00:00"
有没有标准的方法可以做到这一点?或者我必须依赖正则表达式来解码它?
注意:
大多数人建议我使用以下函数
echo date("Y-m-d H:i:s", strtotime("2017-01-10T18:00:00.000Z")) . "\n";**
但是,从该函数得到的输出是错误的,得到的是"2017-01-11 05:00:00",而不是"2017-01-11 18:00:00",为什么?我希望得到我所说的"2017-01-10 18:00:00"
问题出现的原因是需要将形如"2017-01-10T18:00:00.000Z"的时间格式转换成标准的时间格式。解决方法可以使用PHP的date_time()函数来实现。
具体的解决方法可以参考以下链接:PHP Convert ISO date to more readable format?
以下是解决该问题的代码示例:
$dateString = "2017-01-10T18:00:00.000Z"; $dateTime = new DateTime($dateString); $standardTime = $dateTime->format('Y-m-d H:i:s'); echo $standardTime;
通过以上代码,可以将"2017-01-10T18:00:00.000Z"转换成标准的时间格式"2017-01-10 18:00:00"。
问题的出现原因:需要将形如"2017-01-10T18:00:00.000Z"的日期时间转换为标准时间格式,但是该格式不符合常规的日期时间格式,因此需要找到解决方法。
解决方法一:使用PHP的date函数和strtotime函数进行转换。具体代码如下:
date('Y-m-d h:i:s', strtotime($yourDate));
解决方法二:使用Carbon类的parse方法进行转换。具体代码如下:
Carbon::parse($date)
以上两种方法都可以实现将"2017-01-10T18:00:00.000Z"转换为标准时间格式。具体使用哪种方法可以根据实际需求来选择。
希望以上方法能对您有所帮助 🙂
问题的出现原因是PHP的date函数在将UTC时间转换为本地时间时会受到服务器当前时区设置的影响。解决方法是使用gmdate函数代替date函数,因为gmdate函数将UTC时间转换为格林威治时间,不受服务器时区设置的影响。
以下是解决方法的代码示例:
echo gmdate("Y-m-d H:i:s", strtotime("2017-01-10T18:00:00.000Z")) . "\n";
这样就可以得到正确的结果,即2017-01-10 18:00:00。
需要注意的是,"Z"在第一个日期时间字符串中表示UTC时间。当使用date函数进行转换时,结果会根据PHP服务器的本地时区进行调整。而使用gmdate函数进行转换时,结果则是格林威治时间,不会受到服务器时区设置的影响。
时间通常以UTC(协调世界时)表示,并附带特殊的UTC标识符("Z")。更多信息请参考w3.org/TR/NOTE-datetime。