PHP strtotime对于小于1900的日期返回false


PHP strtotime returning false for dates less than 1900

我知道这个问题很普遍

问PHP: strtotime对未来日期返回false ?我如何在PHP中使用1900年之前的日期?

你能确认一下我的选择吗?

  1. 升级到64位架构

  2. 用DateTime + DateInterval代替strtotime调用我们不能调用DateTime->getTimestamp但是我们可以使用DateInterval来计算diff

我还有其他选择吗?不幸的是,我不能选择选项2,因为我依赖于ORM (Propel) +使用strtotime的大量遗留代码。重构这些东西+定制ORM生成器可能比升级到64位更昂贵。

如果有人能确认或提供任何其他选择,将不胜感激。

感谢

日期格式为标准的yyyy-mm-dd

PHP Version 5.3.2

当然,您只能使用这两种解决方案。

如果你能负担得起的话,你应该升级到64位系统,如果它能解决问题,那就更好了。

编辑:只是不得不检查:http://php.net/manual/en/function.runkit-function-redefine.php您可以尝试重新定义strtotime(),以使用1901年之前的日期。

您可以使用gregoriantojd,它的日期范围从公元前4714年到公元9999年,比1900(1970)-2038年的范围要宽得多。如果您试图计算日期差异,那么它们已经足够接近了。除了1582年10月4日至14日"失去的" 10天。而且由于闰年的计算方法不同,每100年就会差一天。