-2

我尝试转换

12-18-1997

18-12-1997

使用此代码

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

但它导致18-12-1969

如果我必须将完整日期与时间一起转换,那么它的转换很好,但在我发布的日期没有时间。

4

2 回答 2

0

使用DateTime代替strtotime()

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

您可以从这个演示中看到它打印:

18-12-1997
于 2013-07-30T18:12:21.883 回答
0

strtotime 很好,但它不是通灵的或无所不知的。你给它一个无法正确解析的时间字符串:

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);
于 2013-07-30T18:13:04.540 回答