为什么 Doctrine 不喜欢旧日期?
Exception was thrown : Could not convert database value "1876-01-01 00:00:00-00:00:00" to Doctrine Type datetime
还有一个:
Exception was thrown : Could not convert database value "0000-00-00 00:00:00-00:00:00" to Doctrine Type datetime
在我的实体中,我确实覆盖datetime
并datetimetz
Type::overrideType('datetime', 'Doctrine\DBAL\Types\VarDateTimeType');
Type::overrideType('datetimetz', 'Doctrine\DBAL\Types\VarDateTimeType');
如果我将日期更新为1976-01-01 00:00:00-00:00:00
它工作正常。
更新:
所以我正在运行 Ubuntu 12.04 64 位,我也知道我有 64 位 time_t 从这些测试中工作:
strtotime() 在运行 PHP 5.3.3 的 32 位和 64 位系统上产生不同的输出(如前所述)。这会影响“零日期”(“0000-00-00 00:00:00”)以及传统 32 日期范围之外的日期。
测试:
strtotime("0000-00-00 00:00:00") returns FALSE on a 32 bit system.
strtotime("0000-00-00 00:00:00") returns -62169955200 on a 64 bit system.
执行时echo strtotime("0000-00-00 00:00:00");
我得到这个:
php time_test.php -62169966000
那么Doctrine有问题吗?