将MYSQL时间戳转换为ISO-8601,不带时区偏移

时间:2011-07-11 18:34:24

标签: php mysql timestamp date-conversion

我正在尝试使用timeago(http://timeago.yarp.com/)并找到了使用php将时间戳从MYSQL转换为ISO-8601的解决方案。

date('c',strtotime($TimeStamp));

除了我在结尾处获得时区偏移

之外,这种方法很好
2011-07-10T08:46:50-**05:00**

我想要的是2011-07-10T08:46:50Z

有没有人有解决方案或者知道为什么我会得到时区偏移?

5 个答案:

答案 0 :(得分:8)

您可以直接在MySQL中执行此操作:

SELECT DATE_FORMAT(yourfield, '%Y-%m-%dT%H:%i:%s0Z')

还有一个GET_FORMAT(datetime, 'iso')调用,但它返回ISO 9075的格式字符串,这不是你想要的。由于它不直接执行8601,因此您必须自己构建格式字符串。

答案 1 :(得分:3)

'c'将返回整个日期,包括时区偏移。您必须使用其他选项手动构建它。试试这个:

$time_stamp = time();
echo date('o-m-N',$time_stamp)."T".date('H:i:s',$time_stamp)."Z";

答案 2 :(得分:1)

http://php.net/manual/en/class.datetime.php#datetime.constants.types

const string ISO8601 = "Y-m-d\TH:i:sO";

您可以使用自己的格式:

date('Y-m-d\TH:i:s\Z',strtotime($TimeStamp));

答案 3 :(得分:1)

简单的Open Graph

 date('Y-m-d\TH:i', strtotime('2015/09/24 08:46:50))

答案 4 :(得分:1)

另一种方式:

substr(date('c',strtotime($Timestamp)),0,-6).'Z';