首页 >后端开发 >php教程 >如何在 PHP 中将 'y-m-d-h-i-s' 日期字符串转换为 'Y-m-d H:i:s'?

如何在 PHP 中将 'y-m-d-h-i-s' 日期字符串转换为 'Y-m-d H:i:s'?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-24 18:32:34558浏览

How Can I Convert a 'y-m-d-h-i-s' Date String to 'Y-m-d H:i:s' in PHP?

在 PHP 中转换日期格式

您可能会遇到需要在 PHP 中将日期从一种格式转换为另一种格式的情况。虽然 PHP 提供了多种日期操作函数,但了解该过程和潜在陷阱至关重要。

考虑以下场景:您有一个格式为“y-m-d-h-i-s”的日期,并且希望将其转换为“Y-m-d H:i:s”格式。通常,您可以使用 strtotime() 将字符串转换为时间戳,然后将其传递给 date()。但是,在您的情况下, strtotime() 返回 false,导致您得到错误的日期“1970-01-01 00:00:00”。

问题在于输入字符串的格式。 strtotime() 需要一个有效的时间戳或它识别的格式的字符串。不幸的是,“y-m-d-h-i-s”不是这些可识别的格式之一。

解决方案

PHP 5.3 及更高版本

对于 PHP 5.3及更高版本,推荐的解决方案是使用日期时间::createFromFormat()。此函数允许您使用 date() 语法指定精确的掩码来解析传入的字符串日期。对于您的情况,代码如下所示:

$datetime = DateTime::createFromFormat('y-m-d-h-i-s', $old_date);
$new_date = $datetime->format('Y-m-d H:i:s');

PHP 5.2 及更低版本

在 PHP 5.2 及更低版本中,您手动解析元素 (year 、月、日、小时、分钟、秒)使用 substr() 并将结果提供给 mktime(),这将生成时间戳。

但是这种方式比较麻烦。最好使用 strftime() 可以理解的不同格式,它支持各种日期输入格式。例如,此代码有效:

$old_date = date('l, F d y h:i:s');                
$old_date_timestamp = strtotime($old_date);
$new_date = date('Y-m-d H:i:s', $old_date_timestamp);

以上是如何在 PHP 中将 'y-m-d-h-i-s' 日期字符串转换为 'Y-m-d H:i:s'?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn