转换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']));