PHP日期导出为CSV格式
导出后,当我打开CSV时,您会注意到L列只正确地格式化了部分日期。这也发生在其他几个日期栏上。我能用PHP做些什么来确保正确返回所有日期吗?下面是我的功能:PHP日期导出为CSV格式,php,datetime,csv,export-to-csv,date-formatting,Php,Datetime,Csv,Export To Csv,Date Formatting,导出后,当我打开CSV时,您会注意到L列只正确地格式化了部分日期。这也发生在其他几个日期栏上。我能用PHP做些什么来确保正确返回所有日期吗?下面是我的功能: public function formatDateCI($date) { // If Birthdate Column if(strlen($date) == 10){ $date = explode('-',$date); $m = $date[0]; $d = $dat
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');
}
简单的解决办法就是这样做
public function formatDateCI($date) {
return date('%Y-%m-%d 00:00:00', strtotime($date));
}
在这种情况下,您可能甚至不需要将其作为方法,因为它将很好地适合调用代码
其他信息
如果您使用的是美式日期格式,则必须更正strotime()
的格式,因为它希望美式日期具有/
分隔符,而不是-
分隔符。如果它看到一个-
分隔符,它需要某种逻辑日期格式
public function formatDateCI($date) {
// correct USA date format for strtotime
$date = str_replace('-','/',$date);
return date('%Y-%m-%d 00:00:00', 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;
如果$date变量没有输入if条件,它会是什么样子?它是来自数据库的datetime列吗?Gabriel,如果它没有输入if条件,它看起来像2014-08-07 21:04:19,Riggs,数据库中的brithdate列不是datetime。其他列是DateTime,但我仍然在其他列DateTime上看到相同的问题,这是否意味着
生日
是日期
对未定义函数strotate()的列调用对不起,我的woops,更正为strotime()
我想我不应该在晚餐时喝那一品脱。谢谢,这适用于数据库中的所有datetime列,但现在许多birthdate字段返回为1970-01-01 00:00:00。birthdate列中到底有什么内容,请举例说明哪里出错?如果birthdate
是可选字段,即用户是否可以将其留空?如果是,您的数据库为该列设置的默认值是多少。这也起作用,但有些生日返回为1970-01-01 00:00:00@Hector你需要有一个统一的日期格式,尝试一个if-else结构,如see-my-edit
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;