PHP Datetime 无法转换负 ISO8601 日期

2023-12-10

用 DateTime 转换负日期让我错误

测试代码

var_dump(\DateTime::createFromFormat(\DateTime::ISO8601, '-0001-11-30T00:00:00+0100'));

Result

boolean false

预期结果

object(DateTime)[5]
  public 'date' => string '-0001-11-30 00:00:00' (length=20)
  public 'timezone_type' => int 1
  public 'timezone' => string '+01:00' (length=6)

(或类似的东西)

附:负日期字符串是使用 $d->format(\DateTime::ISO8601) 创建的;

PHP 版本 PHP 5.4.28


根据手册Format

 public string DateTime::format ( string $format )

where

$format

Format accepted by date().

如果你看看date()

$d->format(\DateTime::ISO8601);

应该

$d->format("c")

因为“c”是根据格式date()

ISO 8601 日期(在 PHP 5 中添加)

在我的测试中$d->format(\DateTime::ISO8601);输出

2015-09-15T00:00:00+0200

while

$d->format("c");

outputs

2015-09-15T00:00:00+02:00

我希望它有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP Datetime 无法转换负 ISO8601 日期 的相关文章

随机推荐