php - 将字符串转换为日期

时间:2012-07-23 13:29:37

标签: php

我正在尝试使用此函数将格式为1899-12-30 19:00:00.000的给定字符串转换为日期:

$startDate = strtotime("1899-12-30 19:00:00.000");

但结果我的日期错了,例如

30.10.2008 00:00:00

我做错了什么?

3 个答案:

答案 0 :(得分:4)

使用DateTime

$date = DateTime::createFromFormat( 'Y-m-d H:i:s.u', '1899-12-30 19:00:00.000', new DateTimeZone( 'America/New_York'));
echo $date->getTimestamp() . ' ' . $date->format( 'Y-m-d H:i:s');

请注意,这将是一个负值,因为它是在1970年1月1日之前。上面的代码outputs

-2209093200 1899-12-30 19:00:00 

确保在构造函数中将正确的时区设置为DateTimeZone(或者您可以省略它以保留默认值)。

答案 1 :(得分:3)

如果您使用的是PHP 5> = 5.3.0,则可以使用date_parse_from_formatDocs这样的函数:

$date = "1899-12-30 19:00:00.000";
$dateObj = date_parse_from_format("Y-m-d H:i:s.000",$date);

来源:php.net

答案 2 :(得分:1)

日期1899-12-30 19:00:00.000由UNIX时间戳-2209096800表示,它刚好在32位有符号整数的范围之外。在64位PHP系统上它可以工作,在32位系统上你会遇到问题。

使用DateTime类来表示此类日期,它可以处理它。