如何使用单个 php 函数以唯一格式更改多个日期格式?

How can I change more than a date format in a unique format with a single php function?

我想了解如何使用 php 函数将不同的日期格式更改为单一格式。在尝试了各种方法之后,我无法解决这个难题。我总是在我的自定义 function.php 中顺利使用以下代码:

/* Change date format for coupon */
function change_date_format($x) {
    $date = DateTime::createFromFormat('j-M-Y', $x);
    $x = $date->format('Y-m-d');
    return $x;
}

这样我就可以把格式'j-M-Y'转换成格式'Y-m-d'。问题是现在我不仅需要转换日期格式'j-M-Y',还需要转换其他格式(例如,我必须转换日期格式'j-M-Y'和日期格式'Y-m-d\TH:i:sP'格式 'Y-m-d'。我试图组合不同的逻辑函数,但系统给我错误。

感谢所有试图帮助我的人...

向名为 $inputFormat 的函数添加一个输入参数,并使用它来代替 'j-M-Y',因此您应该始终指定输入格式。您可以指定默认的输入格式。

/**
 * Return with a normal format of any date by given format
 * Default format is j-M-Y if no input format given
 * 
 * @param string $dateString
 * @param string $inputFormat
 * @return string
 */
function change_date_format($dateString, $inputFormat = 'j-M-Y') {
    $date = DateTime::createFromFormat($inputFormat, $dateString);
    return $date->format('Y-m-d');
}
echo change_date_format('23-05-2016', 'd-m-Y');
echo change_date_format('05/23/2016', 'm/d/Y');

您可以使用如下附加参数:

/*Change date format for coupon*/
function change_date_format($x, $dateFormat) {
    $date = DateTime::createFromFormat($dateFormat, $x);
    $x = $date->format('Y-m-d');
    return $x;
}

DateTime class 非常擅长在没有 createFromFormat() 的情况下解析不同的格式。如果您拥有的格式受支持 (Supported Date and Time Formats),那么就让它根据内置逻辑创建。如果 $x = '2016-06-30T23:59:59+02:00' 那么 DateTime class 处理得很好:

function change_date_format($x) {
    $date = new DateTime($x);
    return $date->format('Y-m-d');
}