0

在我的(非公共)应用程序中,我希望我的用户能够以任何格式输入日期/时间,然后使用 strtotime() 和 date() 将其转换为 YYYY-MM-DD 用于数据库存储。我知道这有几个缺点(例如如何根据语言环境处理 1/1/13 与 1-1-13 等),但多年来,考虑到我的用户群,这些从来都不是问题。

但是,我可能必须解决一个问题,那就是在一个特定应用程序中处理 1970 年之前的日期。由于显而易见的原因,strtotime() 不能很好地工作。我知道我可以使用日期选择器,但想知道是否有更合适的方法来处理这个问题,让我可以做我一直在做的事情,但可以处理更广泛的日期。

4

1 回答 1

0

发布后,我做了一些额外的测试,似乎在我现在正在使用的系统(Ubuntu 12.04 64 位)上,早期没有问题......也许这是一个 64 位的东西?

print date( "Y-m-d", strtotime( "May 5, 1820" ));

按我的意愿打印1820-05-05,但不像我预期的那样打印。我不确定这是否与我正在运行的 Linux 版本、我正在运行的 PHP 版本或其他什么有关。但由于过去对我没有这种方式,我不一定会觉得处理这样的日期很舒服。

我确实找到了 DateTime 对象,所以我想我会使用这种方法,特别是因为它应该处理更广泛的日期:

$date = new DateTime( "May 5, 1820" );
print $oop->format( "Y-m-d" );

如果其他人对此有更好或更正确的解决方案,我会暂时不接受我的答案。

于 2013-09-16T02:20:52.637 回答