日期格式转换结果错误的日期

时间:2013-07-30 18:08:15

标签: php date type-conversion

我尝试转换

12-18-1997

18-12-1997

使用此代码

$new_date = date('d-m-Y', strtotime('12-18-1997'));

但会产生18-12-1969

如果我必须随时间转换完整日期,那么转换就好了,但是在我发布的日期没有时间。

2 个答案:

答案 0 :(得分:0)

使用DateTime代替strtotime()

$date = DateTime::createFromFormat( 'm-d-Y', '12-18-1997');
echo $date->format( 'd-m-Y');

您可以从this demo看到它打印出来:

18-12-1997

答案 1 :(得分:0)

sttotime是好的,但它不是通灵的或无所不知的。你正在为它提供一个无法正确解析的时间字符串:

php > var_dump(strtotime('12-18-1997'));
bool(false)

由于您只是假设它成功了,您将false反馈回date(),其中它被类型转换为整数0.但是,您的结果是不可能的,因为int 0作为日期是1970年1月1日。通过时区转换,您可以31-12-1969 18-12

如果你不能提供strtotime它理解的格式,那么使用date_create_from_format并告诉它格式是什么:

$date = date_create_from_format('m-d-Y', '12-18-1997');
$text = date('d-m-Y', $date);