关于php:将datetime格式更改为y-m-d,但是datetime类似于7/12/17 6:20:39 pm

Change datetime format to Y-m-d, but the datetime is like 7/12/17 6:20:39 pm

本问题已经有最佳答案,请猛点这里访问。

编辑:

我需要将这个日期时间从dd/mm/yy H:i:s格式改为Y-m-d H:i:s格式。

这是针对PHP或CodeIgniter项目的。

我从其他报告中得到一些数据格式不好。

1
2
3
4
5
datetime
7/12/17 12:15:23 pm (dd/mm/yy H:i:s) format
8/12/17 5:18:12 am
20/12/17 5:12:24 pm
21/12/17 12:17:37 pm

如果我得到使用第一格式日期的示例。

1
2
$example_date ="7/12/17 12:15:23 pm"; // d F Y : 07-December-2017 12:15:23
$format_date = $date("Y-m-d", strtotime($example_date));

印刷体:2007-12-17 12:15:23是错误的结果。

d F Y日,它打印了17 December 2007号,但它应该是07 December 2017号。

通常我们可以这样更改日期:

1
2
$example_datetime ="13/12/2017 12:08:16 pm"; // (dd/mm/yy H:i:s) format
$format_date = date("Y-m-d H:i:s", strtotime($example_datetime));

Result from echo $format_date => 2017-12-13 12:08:16 is correct. If the year is 2017 and this is what I wanted to.


您可以使用DateTimecreateFromFormat方法—指定输入日期的格式,然后格式化您希望输出的格式—例如:

1
2
3
4
5
$example_datetime ="13/12/2017 12:08:16 pm";
$date=DateTime::createFromFormat('d/m/Y H:i:s a', $example_datetime );

$output=$date->format('Y-m-d H:i:s');
echo $output; //  -> 2017-12-13 12:08:16

对于输入日期戳中的2位年份,而不是大写的Y,小写的Y应该匹配。

1
2
3
4
5
$example_datetime ="13/12/17 12:08:16 pm";
$date=DateTime::createFromFormat('d/m/y H:i:s a', $example_datetime );

$output=$date->format('Y-m-d H:i:s');
echo $output; //  -> 2017-12-13 12:08:16


试试这个

1
2
3
$example_datetime ="13/12/2017 12:08:16 pm"; // (dd/mm/yy H:i:s) format
$date = str_replace('/', '-', $example_datetime);
echo date("Y-m-d H:i:s", strtotime($date)); // Y-m-d H:i:s

Dates in the m/d/y or d-m-y formats are disambiguate by looking at the
separator between the various components: if the separator is a slash
(/), then the American m/d/y is assumed; whereas if the separator is a
dash (-) or a dot (.), then the European d-m-y format is assumed.
Check more here: http://php.net/manual/en/function.strtotime.php