2017-10-05 180 views
0

我的一些数据迁移过程中的工作,与包括负载的CSV的碳 - 规范日期时间

我现在面临的问题是,我处理的数据文件有2列,即“日”和“时间”。现在,日期本身没有问题。我的“时间”列可以采用任何格式,即H:iH:i:s。无论格式如何,我希望我的输出为d/m/Y H:i:s,如果没有给出秒数,只需追加00。

碳的createFromFormat需要我指定我的输入格式是什么,我不能。目前我所做的是使用Excel根据时间格式将我的CSV文件分割成不同的文件,然后分别导入它们,但这需要花费太多时间。

我似乎无法找到一个可以让我做这件事之一:

if(getSecondsFromTime){ 
    Carbon::createFromFormat($string, 'd/m/Y H:i:s'); 
}else{ 
    Carbon::createFromFormat($string, 'd/m/Y H:i'); 
} 

确实碳/ PHP日期时间有我不知道的,可以做这样的功能?还是我必须解决正则表达式来做我需要的?

回答

0

当您在Excel中处理每一行时,获取您的日期和时间值。然后使用正则表达式来检查时间格式。使用它来指定创建Carbon实例时要使用的格式。

$date = '05/10/2017'; 
$time = '13:31:00'; // or '13:31' 

$format = preg_match('/^\d{2}:\d{2}$/', $time) ? 'd/m/Y H:i' : 'd/m/Y H:i:s'); 
$datetime = Carbon::createFromFormat("{$date} {$time}", $format); 
1

如果更换/-然后Carbon::parse将工作:

$t = '05/10/2017 18:00'; 
$c = Carbon::parse(str_replace('/', '-', $t)); 
+0

我希望碳的功能,而不是诉诸于正则表达式 –