是否可以将正常日期转换为ISO 8601时间格式?
问题描述:
我试图把这种类型的日期格式:是否可以将正常日期转换为ISO 8601时间格式?
周四,2011年11月10日在下午10时37
为ISO 8601格式(与PHP)。我怎样才能做到这一点?我已经试过:
date("c", $row2['time'])
很显然,这是不正确的,因为TIMEAGO jQuery插件是说“41年前”,这绝对不是41年前。
是不可能将这种日期转换成ISO 8601格式?
我试图寻找这一点,我还没有找到如何把这种格式成为ISO 8601
答
您可以使用DateTime对象,可能与DateTime::createFromFormat,或strtotime创建的任何解决方案:
<?php
date_default_timezone_set('America/New_York');
$date = 'Thursday, November 10th, 2011 at 10:37 PM';
$date = str_replace('at', '', $date);
echo date("c", strtotime($date));
编辑:下面是使用对象日期时间的例子。请注意,对于这两个示例,您应该从valid timezone strings列表中设置一个正确的时区。
$date_obj = DateTime::createFromFormat('l, F jS, Y \at h:i A', 'Thursday, November 10th, 2011 at 10:37 PM', new DateTimeZone('America/New_York'));
echo $date_obj->format('c');
您应该将其存储为UTC时间戳,以便您以此方式使用它。 – CommunistPancake
jQuery?这与PHP有什么关系? – mc10
@ mc10 - 我正在使用jQuery插件将日期变成“3分钟前”等,因此用户更容易理解。但它必须采用ISO 8601格式才能正常工作。 – Nathan