在 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中文网其他相关文章!