转换date格式yyyy-mm-dd => dd-mm-yyyy
我想将date从yyyy-mm-dd转换为dd-mm-yyyy(但不是在SQL中); 但是我不知道date函数如何需要一个时间戳,我不能从这个string得到一个时间戳。
这怎么可能?
使用strtotime()
和date()
:
$originalDate = "2010-03-21"; $newDate = date("dmY", strtotime($originalDate));
(请参阅PHP网站上的时间和date文档)。
编辑 :请注意,这是对原始问题的快速解决scheme。 对于更广泛的转换,您应该使用DateTime
类来parsing和格式:-)
如果你想避免strtotime转换(例如strtotime不能parsing你的input),你可以使用,
$myDateTime = DateTime::createFromFormat('Ym-d', $dateString); $newDateString = $myDateTime->format('dm-Y');
或者等价地:
$newDateString = date_format(date_create_from_format('Ym-d', $dateString), 'dm-Y');
你首先给它的格式是$ dateString。然后你告诉它你想要$ newDateString的格式。
或者,如果源格式始终是“Ymd”(yyyy-mm-dd),那么只需使用DateTime :
<?php $source = '2012-07-31'; $date = new DateTime($source); echo $date->format('dmY'); // 31.07.2012 echo $date->format('dm-Y'); // 31-07-2012 ?>
implode('-', array_reverse(explode('-', $date)));
没有date转换的开销,不知道它会很重要。
$newDate = preg_replace("/(\d+)\D+(\d+)\D+(\d+)/","$3-$2-$1",$originalDate);
此代码适用于每种date格式。
由于您的旧date格式,您可以更改replacevariables的顺序,例如$ 3- $ 1- $ 2。
$timestamp = strtotime(your date variable); $new_date = date('dm-Y', $timestamp);
更多:
点击这里
甚至更短:
$new_date = date('dm-Y', strtotime(your date variable));
另外一个晦涩的可能性:
$oldDate = '2010-03-20' $arr = explode('-', $oldDate); $newDate = $arr[2].'-'.$arr[1].'-'.$arr[0];
我不知道我是否会使用它,但仍然:)
最被投票的答案实际上是不正确的!
PHP strtotime手册在这里指出:“该函数期望被赋予一个包含英文date格式的string”。 它实际上意味着它预计美国的date格式,如“mdY”或“m / d / Y”。
这意味着作为“Ymd”提供的date可能会被strtotime误解。 您应该以预期的格式提供date。
我写了一个小函数来以多种格式返回date。 随意使用和修改。 如果有人把它变成一个类,我会很高兴,如果这将分享。
function Date_Converter($date, $locale = "br") { # Exception if (is_null($date)) $date = date("m/d/YH:i:s"); # Let's go ahead and get a string date in case we've been given a Unix Time Stamp if ($locale == "unix") $date = date("m/d/YH:i:s", $date); # Separate Date from Time $date = explode(" ", $date); if ($locale == "br") { # Separate d/m/Y from Date $date[0] = explode("/", $date[0]); # Rearrange Date into m/d/Y $date[0] = $date[0][1] . "/" . $date[0][0] . "/" . $date[0][2]; } # Return date in all formats # US $Return["datetime"]["us"] = implode(" ", $date); $Return["date"]["us"] = $date[0]; # Universal $Return["time"] = $date[1]; $Return["unix_datetime"] = strtotime($Return["datetime"]["us"]); $Return["unix_date"] = strtotime($Return["date"]["us"]); $Return["getdate"] = getdate($Return["unix_datetime"]); # BR $Return["datetime"]["br"] = date("d/m/YH:i:s", $Return["unix_datetime"]); $Return["date"]["br"] = date("d/m/Y", $Return["unix_date"]); # Return return $Return; } # End Function
两种方式来实现这一点
1) $date = strtotime(date); $new_date = date('dm-Y', $date);
2)
$cls_date = new DateTime($date); echo $cls_date->format('dm-Y');
你可以尝试strftime
函数。 像strftime($time, '%d %m %Y');
以下是使用mktime()
生成明天date的PHP代码,并将其格式更改为dd / mm / yyyy格式,然后使用echo
将其打印出来。
$tomorrow = mktime(0, 0, 0, date("m"), date("d") + 1, date("Y")); echo date("d", $tomorrow) . "/" . date("m", $tomorrow). "/" . date("Y", $tomorrow);
使用此function从任何格式转换为任何格式
function reformatDate($date, $from_format = 'd/m/Y', $to_format = 'Ym-d') { $date_aux = date_create_from_format($from_format, $date); return date_format($date_aux,$to_format); }
date('m/d/Y h:i:s a',strtotime($val['EventDateTime']));