我试图将日期从yyyy-mm-dd转换为dd-mm-yyyy(但不是SQL);然而,我不知道日期函数如何需要时间戳,我无法从这个字符串中获得时间戳。

这怎么可能呢?


当前回答

还有一种模糊的可能性:

$oldDate = '2010-03-20'
$arr = explode('-', $oldDate);
$newDate = $arr[2].'-'.$arr[1].'-'.$arr[0];

我不知道我是否会使用它,但仍然:)

其他回答

如果你想避免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
?>

还有一种模糊的可能性:

$oldDate = '2010-03-20'
$arr = explode('-', $oldDate);
$newDate = $arr[2].'-'.$arr[1].'-'.$arr[0];

我不知道我是否会使用它,但仍然:)

使用strtotime()和date():

$originalDate = "2010-03-21";
$newDate = date("d-m-Y", strtotime($originalDate));

(请参阅PHP站点上的strtotime和date文档。)

请注意,这是原始问题的快速解决方案。对于更广泛的转换,你应该使用DateTime类来解析和格式化:-)

使用date_create和date_format

试试这个。

function formatDate($input, $output){
  $inputdate = date_create($input);
  $output = date_format($inputdate, $output);
  return $output;
}
$timestamp = strtotime(your date variable); 
$new_date = date('d-m-Y', $timestamp);

有关更多信息,请参阅strtotime的文档。

或者更短:

$new_date = date('d-m-Y', strtotime(your date variable));