我知道这个问题非常受欢迎
在这里问 PHP: strtotime is returning false for a future date? 在这里How can I work with dates before 1900 in PHP?
请你确认我的选择:
升级到64位架构
用DateTime + DateInterval替换strtotime调用 我们不能调用DateTime-> getTimestamp但我们可以使用DateInterval来计算差异
我还有其他选择吗? 不幸的是,我不能选择选项2,因为我依赖于ORM(Propel)+使用strtotime的许多遗留代码。重构这些东西+自定义ORM生成器可能比升级到64位更昂贵。
如果有人可以确认或提供任何其他选择,那将非常感激。
由于
日期格式是标准yyyy-mm-dd
PHP Version 5.3.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年就要休息一天。