如何在PHP中将datetime转换为ISO 8601
如何将时间从如何在PHP中将datetime转换为ISO 8601,php,datetime,date-format,datetime-format,time-format,Php,Datetime,Date Format,Datetime Format,Time Format,如何将时间从2010-12-30 23:21:46转换为ISO 8601日期格式?(-)面向对象 这是推荐的方法 $datetime = new DateTime('2010-12-30 23:21:46'); echo $datetime->format(DateTime::ATOM); // Updated ISO8601 程序性 对于旧版本的PHP,或者如果您更熟悉过程代码 echo date(DATE_ISO8601, strtotime('2010-12-30 23:21:
2010-12-30 23:21:46
转换为ISO 8601日期格式?(-)面向对象
这是推荐的方法
$datetime = new DateTime('2010-12-30 23:21:46');
echo $datetime->format(DateTime::ATOM); // Updated ISO8601
程序性 对于旧版本的PHP,或者如果您更熟悉过程代码
echo date(DATE_ISO8601, strtotime('2010-12-30 23:21:46'));
PHP5之后,您可以使用以下内容:
echo date(“c”)代码>格式ISO 8601格式化日期时间
注释供评论:
关于,对于基本格式:±[hh]:[mm]、±[hh][mm]或±[hh]
,这两个表达式都适用于时区
但请注意,+0X:00是正确的,+0X00对于扩展使用是不正确的。所以最好使用date(“c”)
。类似的讨论。如何从ISO 8601转换为unixtimestamp:
如何从unixtimestamp转换为ISO 8601(时区服务器):
如何从unixtimestamp转换为ISO 8601(GMT):
如何从unixtimestamp转换为ISO 8601(自定义时区):
如果您尝试在datetime local中设置一个值
date("Y-m-d\TH:i",strtotime('2010-12-30 23:21:46'));
//output : 2010-12-30T23:21
您可以这样尝试:
$datetime = new DateTime('2010-12-30 23:21:46');
echo $datetime->format(DATE_ATOM);
问题,输出是2010-12-30T23:21:46+1100
如何使其成为2010-12-30T23:21:46+11:00
?@wow试试这个preg_replace('/(date('c',strotime('2010-12-30 23:21:46'))
nice@Gordon:)我要注意,使用date ISO8601
生成的日期字符串与ISO8601稍有不同(TZ中缺少冒号,ISO8601希望时间全部有冒号或全部没有冒号,而不是混合)
date('c'))
确实会生成严格的ISO 8601有效日期-如果代码要求严格的ISO 8601日期时间格式,这可能会导致难以跟踪错误。Ref:@Gordon yes我从@alex@wow请指出为什么4530个结果中没有一个能回答你的问题。@Gordon我仍在学习如何从A到Z写作,但我发现它们教会了我如何写作从Z到A:)@wow不。他们教你如何写字母表($from,$to)。几乎所有人都告诉你使用date($format,strotime($dateString))
或日期时间
对象等价物。它们只是在这些函数的输入上有所不同。你所要做的就是找出输入是什么。@Gordon是的,你是对的。我刚刚知道字母表,现在拼写比赛时间。希望我在正确的学校。注意日期ISO8601
;+0X:00
vs+0X00
@Ja͢ck这是否需要否决表决,那么?一个微小的差异通常是个坏主意。@rybo111我看不出有理由否决这个答案;从技术上讲,'c'
和日期ISO8601
都会产生有效的ISO8601时间表示。我添加了一个注释来回答。@Ja͢ck日期ISO8601
不会产生valid ISO8601表示法。DATE_ATOM不认为在给公认答案的评论中提到了类似的解决方案,使用DATE_ATOM
和c
早在几年前就已在该页面上发布。
date_format(date_create('@'. 1326883500), 'c') . "\n";
// Output : 2012-01-18T10:45:00+00:00
date_format(date_timestamp_set(new DateTime(), 1326883500)->setTimezone(new DateTimeZone('America/New_York')), 'c');
// Output : 2012-01-18T05:45:00-05:00
date("Y-m-d\TH:i",strtotime('2010-12-30 23:21:46'));
//output : 2010-12-30T23:21
$datetime = new DateTime('2010-12-30 23:21:46');
echo $datetime->format(DATE_ATOM);