字符串到时间,但没有strtotime()的限制

时间:2013-09-15 21:22:37

标签: date strtotime

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

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

1 个答案:

答案 0 :(得分: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" );

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