我想将字符串转换为日期时间,但不起作用
<?php $date = date_create_from_format('d_m_Y_H_i_s', '29_11_2016_5_0_15'); echo date_format($date, 'Y-m-d');
返回
Warning: date_format() expects parameter 1 to be DateTimeInterface, boolean given ...
解决方案是什么?
wswtfjt71#
date_create_from_format()在失败时返回false,或在成功时返回新的DateTime示例。您的命令失败,因为分钟是两位数,而不是一位数。找不到两位数分钟因此,只需使用29_11_2016_5_00_15作为时间字符串,如下所示
date_create_from_format()
29_11_2016_5_00_15
// Try to create the datetime instance if ($date = date_create_from_format('d_m_Y_H_i_s', '29_11_2016_5_00_15')) { echo date_format($date, 'Y-m-d'); } else { // It failed! Errors found, let's figure out what! echo "<pre>"; print_r(date_get_last_errors()); echo "</pre>"; }
上面代码片段的输出将是2016-11-29,live demo:https://3v4l.org/6om9g使用date_get_last_errors(),您将能够获得DateTime示例中给出的错误。
2016-11-29
date_get_last_errors()
pb3s4cty2#
您必须使用minutes与两个字符,在您的代码中只有一个,其中应该与前导0。所以只需在前面补0即可。
<?php $string = '29_11_2016_5_0_15'; $array = explode('_', $string); $array[4] = str_pad($array[4], 2, 0, STR_PAD_LEFT); $string = implode('_', $array); $date = date_create_from_format('d_m_Y_H_i_s', $string); echo date_format($date, 'Y-m-d');
cbeh67ev3#
I format date: echo date("d/m/Y H:i:s a", strtotime($row['timestamp']));
3条答案
按热度按时间wswtfjt71#
date_create_from_format()
在失败时返回false,或在成功时返回新的DateTime示例。您的命令失败,因为分钟是两位数,而不是一位数。
找不到两位数分钟
因此,只需使用
29_11_2016_5_00_15
作为时间字符串,如下所示上面代码片段的输出将是
2016-11-29
,live demo:https://3v4l.org/6om9g使用
date_get_last_errors()
,您将能够获得DateTime示例中给出的错误。pb3s4cty2#
您必须使用minutes与两个字符,在您的代码中只有一个,其中应该与前导0。
所以只需在前面补0即可。
cbeh67ev3#