3

我正在尝试使用 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

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

4

5 回答 5

8

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

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

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

于 2011-07-11T19:04:58.740 回答
3

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

$time_stamp = time();
echo date('o-m-N',$time_stamp)."T".date('H:i:s',$time_stamp)."Z";
于 2011-07-11T18:59:15.123 回答
3

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));
于 2014-09-23T05:45:49.340 回答
1

简单的开放图

 date('Y-m-d\TH:i', strtotime('2015/09/24 08:46:50))
于 2015-10-10T21:45:51.930 回答
1

另一种方式:

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

于 2016-10-10T23:53:43.710 回答