我如何将时间从2010-12-30 23:21:46
转换为ISO 8601日期格式? (-_-;)
我如何将时间从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'));
2010-12-30T23:21:46+1100
转换为 2010-12-30T23:21:46+11:00
? - wowecho date('c', ...)
输出带有冒号的日期时间格式。 - Gordondate('c', strtotime('2010-12-30 23:21:46'))
不错 @Gordon :) - wowDATE_ISO8601
会产生一个日期字符串,它稍微不同于ISO8601(TZ中缺少冒号,ISO8601期望时间要么全部带上冒号,要么全部不带,而不是混合)- date('c')
生成的是严格符合ISO 8601的日期 - 如果代码期望严格的ISO 8601日期时间格式,则可能会导致难以追踪的错误。 参考:https://en.wikipedia.org/wiki/ISO_8601 - ckmDateTime::ATOM
,请参阅http://php.net/manual/en/class.datetime.php#datetime.constants.iso8601中的注释。 - Guilhermeecho date(“c”);
生成ISO 8601格式的日期时间。
http://ideone.com/nD7piL
评论注意事项:±[hh]:[mm],±[hh][mm]或±[hh]
。date(“c”)
。类似讨论在此处。DATE_ISO8601
的细微差别;+0X:00
与 +0X00
。 - Ja͢ck'c'
和DATE_ISO8601
都可以产生有效的ISO8601时间表示。 - Ja͢ckDATE_ISO8601
不会生成有效的ISO8601表示形式,但DATE_ATOM
可以。” - Captain Obviousstrtotime('2012-01-18T11:45:00+01:00');
// Output : 1326883500
date_format(date_timestamp_set(new DateTime(), 1326883500), 'c');
// Output : 2012-01-18T11:45:00+01:00
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
$datetime->format('Y-m-d\TH:i:s.u\Z')
应该提供正确的格式,带有"T"分隔符,"Z"时区(请确保首先转换为UTC)和微秒(如果您不打算支持小数秒,请省略.u
)。
请参见https://dev59.com/4Wkw5IYBdhLWcg3w9_Mi#9532375以了解为什么应该使用T
ISO 8601在PHP中基本上是表示为"Y-m-d\TH:i:sP"
你可以从一个常量中获取这个值:
DateTime::ATOM
- 适用于PHP版本低于7.2(已删除)
DateTimeInterface::ATOM
- 适用于PHP版本7.2及以上
DateTime::ATOM
在PHP 7.2中没有被移除。 - XiyngDateTime::ATOM
。 - undefined如果您尝试在datetime-local中设置一个值
date("Y-m-d\TH:i",strtotime('2010-12-30 23:21:46'));
//output : 2010-12-30T23:21
echo $objDateTime->format('c'); // ISO8601 formated datetime
echo $objDateTime->format(DateTime::ISO8601); // Another way to get an ISO8601 formatted string
$datetime = new DateTime('2010-12-30 23:21:46');
echo $datetime->format(DATE_ATOM);
DATE_ATOM
和 c
已经在几年前发布在本页面上了。 - mickmackusa您也可以通过模态框内的变异来获取时间戳转换,就像这样
class YourModal extends Model
{
public function getCreatedAtAttribute($date)
{
return date(DATE_ISO8601, strtotime($date)); // ISO 8601 Date Format
}
}
public static function toISO8601(string $dateString): string {
$dateTime = new \DateTime($dateString, new \DateTimeZone('UTC'));
return $dateTime->format('Y-m-d\\TH:i:s.vp');
}
2010-12-30T04:56:00.000Z
date($format, strtotime($dateString))
或等效的DateTime
对象。它们只有在这些函数的输入上有所不同。你只需要去 PHP 手册中找到相应页面,查找输入即可。 - Gordon