我尝试转换
12-18-1997
至
18-12-1997
使用此代码
$new_date = date('d-m-Y', strtotime('12-18-1997'));
但它导致18-12-1969
如果我必须将完整日期与时间一起转换,那么转换很好,但在我发布的有问题的日期中没有时间。
使用DateTime
而不是strtotime()
:
$date = DateTime::createFromFormat( 'm-d-Y', '12-18-1997');
echo $date->format( 'd-m-Y');
你可以从这个演示中看到它打印:
18-12-1997
strtotime是好的,但它不是通灵的或无所不知的。你给它输入了一个无法正确解析的时间字符串:
php > var_dump(strtotime('12-18-1997'));
bool(false)
由于您只是假设它成功了,所以您将false
反馈给date()
,在那里它被类型转换为整数0。但是,您的结果是不可能的,因为int 0作为日期是1970年1月1日。对于时区转换,它将是31-12-1969
,NOT18-12
。
如果你不能给strtotime一个它能理解的格式,那么使用date_create_from_format并告诉它格式是什么:
$date = date_create_from_format('m-d-Y', '12-18-1997');
$text = date('d-m-Y', $date);