如何在PHP中将datetime转换为ISO 8601

时间:2011-03-16 07:38:11

标签: php datetime date-format datetime-format time-format

如何将时间从2010-12-30 23:21:46转换为ISO 8601日期格式? (-_-;)

7 个答案:

答案 0 :(得分:196)

面向对象

这是推荐的方法。

$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'));

答案 1 :(得分:34)

在PHP 5之后,您可以使用:echo date("c");格式ISO 8601格式化日期时间。

http://ideone.com/nD7piL

注释:

关于this,这两个表达式对于时区有效,基本格式为:±[hh]:[mm], ±[hh][mm], or ±[hh]

但请注意,+ 0X:00是正确的,+ 0X00对于扩展使用不正确。所以最好使用date("c")。类似的讨论here

答案 2 :(得分:2)

如何从ISO 8601转换为unixtimestamp:

strtotime('2012-01-18T11:45:00+01:00');
// Output : 1326883500

如何从unixtimestamp转换为ISO 8601(时区服务器):

date_format(date_timestamp_set(new DateTime(), 1326883500), 'c');
// Output : 2012-01-18T11:45:00+01:00

如何从unixtimestamp转换为ISO 8601(GMT):

date_format(date_create('@'. 1326883500), 'c') . "\n";
// Output : 2012-01-18T10:45:00+00:00

如何从unixtimestamp转换为ISO 8601(自定义时区):

date_format(date_timestamp_set(new DateTime(), 1326883500)->setTimezone(new DateTimeZone('America/New_York')), 'c');
// Output : 2012-01-18T05:45:00-05:00

答案 3 :(得分:0)

如果您尝试在datetime-local

中设置值
date("Y-m-d\TH:i",strtotime('2010-12-30 23:21:46'));

//output : 2010-12-30T23:21

答案 4 :(得分:0)

您可以尝试这种方式:

$datetime = new DateTime('2010-12-30 23:21:46');

echo $datetime->format(DATE_ATOM);

答案 5 :(得分:0)

ISO 8601 在 PHP 中基本上表示为 "Y-m-d\TH:i:sP"

您可以从常量中获取此值:

DateTime::ATOM - 对于低于 7.2 的 PHP 版本(已删除)

DateTimeInterface::ATOM - 适用于自 7.2 起的 PHP 版本

答案 6 :(得分:-2)

date("c");

//output : 2018-02-28T13:12:44+01:00