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

时间:2011-08-25 23:50:12

标签: php strtotime

我知道这个问题非常受欢迎

在这里问 PHP: strtotime is returning false for a future date? 在这里How can I work with dates before 1900 in PHP?

请你确认我的选择:

  1. 升级到64位架构

  2. 用DateTime + DateInterval替换strtotime调用 我们不能调用DateTime-> getTimestamp但我们可以使用DateInterval来计算差异

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

    如果有人可以确认或提供任何其他选择,那将非常感激。

    由于

    日期格式是标准yyyy-mm-dd

    PHP Version 5.3.2

2 个答案:

答案 0 :(得分:3)

AFAIK,您仅限于这两种解决方案。

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

修改:必须检查: http://php.net/manual/en/function.runkit-function-redefine.php 您可以尝试重新定义strtotime()以使用1901年之前的日期。

答案 1 :(得分:0)

你可以使用gregoriantojd,其日期范围是公元前4714年。至公元9999年,范围比1900年(1970年)-2038更广。如果您正在尝试计算日期差异,那么它们就足够接近了。好吧,除了1582年10月4日至14日“失去的”10天。由于闰年计算不同,你每100年就要休息一天。