在PHP中是否有一种简单的方法将一种日期格式转换为另一种日期格式?

我有这个:

$old_date = date('y-m-d-h-i-s');            // works

$middle = strtotime($old_date);             // returns bool(false)

$new_date = date('Y-m-d H:i:s', $middle);   // returns 1970-01-01 00:00:00

但我当然希望它返回当前日期,而不是黎明时分。我做错了什么?


当前回答

您需要将$old_date转换回时间戳,因为date函数需要时间戳作为第二个参数。

其他回答

最简单的方法是

$myDateTime = DateTime::createFromFormat('Y-m-d', $dateString);
$newDateString = $myDateTime->format('m/d/Y');

你首先给它$dateString的格式。然后你告诉它你想要的$newDateString的格式。

这也避免了使用strtotime,它有时很难使用。

如果你不想从一种日期格式转换到另一种,而只是想要特定格式的当前日期(或datetime),那么就更容易了:

$now = new DateTime();
$timestring = $now->format('Y-m-d h:i:s');

另一个问题也涉及同一个主题:转换日期格式yyyy-mm-dd => dd-mm-yyyy。

试试这个:

$tempDate = explode('-','03-23-15');
$date = '20'.$tempDate[2].'-'.$tempDate[0].'-'.$tempDate[1];

Strtotime会解决这个问题。日期只是不一样,都是美国格式。

<?php
$e1 = strtotime("2013-07-22T12:00:03Z");
echo date('y.m.d H:i', $e1);
echo "2013-07-22T12:00:03Z";

$e2 = strtotime("2013-07-23T18:18:15Z");
echo date ('y.m.d H:i', $e2);
echo "2013-07-23T18:18:15Z";

$e1 = strtotime("2013-07-21T23:57:04Z");
echo date ('y.m.d H:i', $e2);
echo "2013-07-21T23:57:04Z";
?>

在php中更改日期格式的最简单的方法

在PHP中,可以使用不同的场景将任何日期转换为所需的日期格式,例如将任何日期格式转换为日,日,月,年

$newdate = date("D, d M Y", strtotime($date));

它将以以下非常好的格式显示日期

2020年11月16日星期一

如果你也有你现有日期格式的时间,例如,如果你有SQL 2020-11-11 22:00:00的日期时间格式,你可以使用下面的方法将其转换为所需的日期格式

$newdateformat = date("D, d M Y H:i:s", strtotime($oldateformat));

它将显示日期在以下良好的格式

2020年11月15日星期日16:26:00

$old_date = date('y-m-d-h-i-s');       // works

你在这里做错了,这应该是

$old_date = date('y-m-d h:i:s');       // works

时间分隔符是“:”


我想这会有帮助……

$old_date = date('y-m-d-h-i-s');              // works

preg_match_all('/(\d+)-(\d+)-(\d+)-(\d+)-(\d+)-(\d+)/', $old_date, $out, PREG_SET_ORDER);
$out = $out[0];
$time = mktime($out[4], $out[5], $out[6], $out[2], $out[3], $out[1]);

$new_date = date('Y-m-d H:i:s', $time); 

OR


$old_date = date('y-m-d-h-i-s');              // works

$out = explode('-', $old_date);
$time = mktime($out[3], $out[4], $out[5], $out[1], $out[2], $out[0]);

$new_date = date('Y-m-d H:i:s', $time);