2017-10-05 7 views
0

을 표준화 CSV의탄소 -의 부하 구성으로, 나는 일부 데이터 마이그레이션 프로세스 일하고 날짜

지금 직면하고있어 문제는 내가 함께 일하고 데이터 파일이 2 열, 즉 "일"을 가지고 있다는 것입니다 및 "시간". 이제 날짜 자체에는 문제가 없습니다. 내 '시간'열은 H:i 또는 H:i:s과 같은 형식으로 올 수 있습니다. 형식에 관계없이 출력을 d/m/Y H:i:s으로하고 초를 지정하지 않으면 00을 추가합니다.

Carbon의 createFromFormat을 사용하려면 입력 형식이 무엇인지 지정해야합니다. 그럴 수 없습니다. 현재 내가하고있는 일은 Excel을 사용하여 CSV 파일을 시간 형식에 따라 다른 파일로 분할 한 다음 개별적으로 가져 오는 것이지만 너무 많은 시간이 소요됩니다.

나는 내가이 작업을 수행 할 수있는 기능을 찾을 수없는 것 중 하나

합니까 탄소/PHP 날짜 시간 나는이 작업을 수행 할 수있는 인식하지 못하고 오전 기능이
if(getSecondsFromTime){ 
    Carbon::createFromFormat($string, 'd/m/Y H:i:s'); 
}else{ 
    Carbon::createFromFormat($string, 'd/m/Y H:i'); 
} 

? 아니면 내가 필요로하는 것을 정규식으로 해결해야만 하는가?

답변

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

나는 탄소는 기능이 바라고 대신 정규식에 의존했다 –