我在数组中有一些日期,作为用户提供的数据集的一部分。假设他们是这样的:
['01/02/13', '12/10/13']
我需要将DD / MM / YYYY转换为MM / DD / YYYY。这是接收这些数据的JavaScript的要求。
一个用户可以上传DD / MM,一个用户可以上传MM / DD,所以我有一些代码可以检查任何日期是否为DD / MM并设置一个标志: / p>
$isDayMonthFormat = false;
// For every row of data in the dataRS...
foreach ($data as $row) {
// We loop through each cell of data
foreach ($row as $cell) {
// Check if this cell of data is a date. This will return nothing if
// it's not a date and therefore falsy
if (strtotime($cell)) {
$dateParsed = date_parse($cell);
preg_match('/(\d{2})/', $cell, $dateRegex);
$isDayMonthFormat = $dateRegex[1] == $dateParsed['day'];
if ($isDayMonthFormat) {
break;
}
}
}
}
现在,如果一个用户仅执行MM / DD,则此标志从不触发。但是,当它跳闸时,我需要将用户上传的所有所有日期转换为MM / DD。
我遇到的问题是如何在解析时告诉PHP 01/02/13是2月1日,而不是1月2日,因此我可以正确格式化。如果我的$isDayMonthFormat
标志为true,那么我希望01/02/13
成为02/01/13
。我也无法拆分/
之类的东西,因为用户可以在-
之间进行拆分,也可以在PHP中使用任何其他有效格式。