datetime — PHP Экспорт даты в формат CSV

После экспорта, и когда я открою 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');
}

Столбец L Формат даты Выпуск

1

Решение

Пытаться:

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;
2

Другие решения

Простым решением было бы сделать именно это

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));
}
0

По вопросам рекламы [email protected]