DateTime::createFromFormat 返回 False - 毫秒

我有点困惑为什么以下失败。我有一个格式为的日期时间字符串


YmdHisv


假设字符串 =20201212000000000


为什么以下会失败(忽略奇数输入)?


$year = date("Y");

$input = ($year."1212"."00000000"."0");

$format = "YmdHisv";


$stamp = DateTime::createFromFormat($format,$input);

由此返回的错误是:


  'error_count' => int 2

  'errors' => 

    array (size=2)

      14 => string 'The format separator does not match' (length=35)

      15 => string 'Trailing data' (length=13)

如果我删除毫秒就没有问题了。


编辑:执行以下操作将返回 3 位数的毫秒时间。所以不确定为什么我的毫秒无效。


$now = new DateTime();

echo $now->format("v");

编辑:看起来以下也会失败。有(微秒)奇怪行为的文档,但是(毫秒)u呢?v


$format = "YmdHisv";

$now = new DateTime();

$now = $now->format($format);

$stamp = DateTime::createFromFormat($format,$now);

编辑:我可能有我的答案,但正在寻找更多解释[来自文档]


与格式化修饰符不同,createFromFormat 不接受“.v”修饰符。


婷婷同学_
浏览 65回答 1
1回答

一只名叫tom的猫

我的 PHP 版本需要更新。7.3+ 之前:createFromFormat 不接受“.v”修饰符,与格式化修饰符不同。7.3.0 添加了 v 格式说明符。
打开App,查看更多内容
随时随地看视频慕课网APP