如何在PHP中创建带有毫秒的ISO 8601日期格式?

hgc7kmma  于 2023-01-08  发布在  PHP
关注(0)|答案(1)|浏览(145)

我尝试在代码中将日期2018-07-17T17:34:08.167解析为DateTimeImmutable对象,我尝试这样做:

\DateTimeImmutable::createFromFormat('c', $s);

但是,由于存在毫秒并且没有时区,PHP为此返回false
然后我尝试通过自己定义格式来创建它,但问题是T被用作时区缩写。

\DateTimeImmutable::createFromFormat('YYYY-mm-ddTHH:ii:ss.v', $s);
\DateTimeImmutable::createFromFormat('YYYY-mm-dd\\THH:ii:ss.v', $s);

我读了this answer并尝试了通配符,但没有骰子。

\DateTimeImmutable::createFromFormat('YYYY-mm-dd*HH:ii:ss.v', $s);

有人知道我怎么解析这个吗?
编辑:当你花了整整一周的时间coding in C#,然后忘记如何在PHP中格式化的那一刻...

ufj5ltwl

ufj5ltwl1#

你不必用4乘以YYYYY),因为Y用4位数表示年份。

$s='2018-07-17T17:34:08.167';
var_dump(\DateTimeImmutable::createFromFormat('Y-m-d\TH:i:s.v', $s));

输出:

object(DateTimeImmutable)#1 (3) {
  ["date"]=>
  string(26) "2018-07-17 17:34:08.167000"
  ["timezone_type"]=>
  int(3)
  ["timezone"]=>
  string(16) "Europe/Paris"
}

相关问题