strtotime 从 ISO8601 格式下降微秒,是否有替代功能没有?

strtotime drops microseconds from ISO8601 format, is there an alternative function that doesn't?

当我这样做时:

echo(strtotime('2020-06-16T08:08:18.339Z'));

strtotime 给我:

1592294898

是否有函数可以将 date/time 转换为 ISO8601 format 而不会丢失微秒? (秒的小数部分,类似于 microtime(true) 函数返回的秒数。)

PS。我正在使用 PHP 7.4

与 PHP 中的日期一样,DateTime 来拯救

$str = '2020-06-16T08:08:18.339Z';

$dt = new DateTime($str); // or DateTime::createFromFormat('Y-m-d\TH:i:s.uO', $str);

echo (float) $dt->format('U.u');

演示~https://3v4l.org/ee9MZ


如果您只对毫秒感兴趣,但您的问题是 "microseconds",您也可以在 createFromFormat 中使用 DATE_RFC3339_EXTENDED 常量。