После экспорта, и когда я открою CSV, вы заметите, что столбец L форматирует только некоторые даты должным образом. Это также произошло в паре других столбцов даты. Могу ли я что-нибудь сделать с PHP, чтобы все даты возвращались правильно? Ниже идентификатор моей функции:
public function formatDateCI($date) {
// If Birthdate Column
if(strlen($date) == 10){
$date = explode('-',$date);
$m = $date[0];
$d = $date[1];
$Y = $date[2];
$date = $Y.'-'.$m.'-'.$d;
}
$date = new DateTime($date);
// Final Format 1983-24-12 00:00:00
return date_format($date, 'Y-d-m H:i:s');
}
Пытаться:
date('Y-m-d H:i:s', strtotime($date));
Вместо:
$date = new DateTime($date);
>
Обязательно попробуйте структуру if else:
if(strlen($date) == 10){
$date = explode('-',$date);
$M= $date[0];
$D = $date[1];
$Y = $date[2];
//this $date = $Y.'-'.$m.'-'.$d;
//or this =>
$date = date('Y-m-d H:i:s', mktime($h, $m, $s, $M, $D, $Y));
}else{
$date = date('Y-m-d H:i:s', strtotime($date));
}
return $date;
Простым решением было бы сделать именно это
public function formatDateCI($date) {
return date('%Y-%m-%d 00:00:00', strtotime($date));
}
В этом случае вам, вероятно, даже не нужно делать это методом, так как он хорошо вписывается в вызывающий код.
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ
Если вы используете американский формат даты, вам придется исправить формат для strtotime()
как ожидается, даты в формате США будут иметь /
Сепаратор, а не -
Seperator. Если это увидеть -
Сепаратор ожидает какой-то логический формат даты.
public function formatDateCI($date) {
// correct USA date format for strtotime
$date = str_replace('-','/',$date);
return date('%Y-%m-%d 00:00:00', strtotime($date));
}