我试图将日期从yyyy-mm-dd转换为dd-mm-yyyy(但不是SQL);然而,我不知道日期函数如何需要时间戳,我无法从这个字符串中获得时间戳。
这怎么可能呢?
我试图将日期从yyyy-mm-dd转换为dd-mm-yyyy(但不是SQL);然而,我不知道日期函数如何需要时间戳,我无法从这个字符串中获得时间戳。
这怎么可能呢?
当前回答
对于这种特定的转换,我们还可以使用格式字符串。
$new = vsprintf('%3$s-%2$s-%1$s', explode('-', $old));
显然,这不适用于许多其他日期格式转换,但由于我们在本例中只是重新排列子字符串,因此这是另一种可能的方法。
其他回答
如果你想避免strtotime转换(例如,strtotime不能解析你的输入),你可以使用,
$myDateTime = DateTime::createFromFormat('Y-m-d', $dateString);
$newDateString = $myDateTime->format('d-m-Y');
或者,相当于:
$newDateString = date_format(date_create_from_format('Y-m-d', $dateString), 'd-m-Y');
你首先给它$dateString的格式。然后你告诉它你想要的$newDateString的格式。
或者如果source-format总是“Y-m-d”(yyyy-mm-dd),那么只需使用DateTime:
<?php
$source = '2012-07-31';
$date = new DateTime($source);
echo $date->format('d.m.Y'); // 31.07.2012
echo $date->format('d-m-Y'); // 31-07-2012
?>
您可以使用date()和strtotime()更改格式。
$date = '9/18/2019';
echo(’d-m-y’日期、strtotime(美元);
结果:
The 18-09-19
我们可以通过改变(d-m-y)来改变格式。
$newDate = preg_replace("/(\d+)\D+(\d+)\D+(\d+)/","$3-$2-$1",$originalDate);
此代码适用于所有日期格式。
由于您的旧日期格式,您可以更改替换变量的顺序,例如$3-$1-$2。
使用strtotime()和date():
$original_dateTime = "2019-05-11 17:02:07"; #This may be database datetime
$newDate = date("d-m-Y", strtotime($original_dateTime));
随着时间的推移
$newDate = date("d-m-Y h:i:s a", strtotime($original_dateTime));
还有一种模糊的可能性:
$oldDate = '2010-03-20'
$arr = explode('-', $oldDate);
$newDate = $arr[2].'-'.$arr[1].'-'.$arr[0];
我不知道我是否会使用它,但仍然:)