본문 바로가기
PHP/Laravel

[Laravel] 날짜 포멧 변경하기 - 문자열을 DateTime으로 변경

by 집탱구리 2023. 6. 19.
반응형

 

최근 회사에서 옛날 데이터를 옮기는 작업을 했는데

날짜 데이터를 '20180101000108'이런식의 문자열로 저장해놓았길래 변환하는 작업이 필요했다.

그 때 사용한 방법 몇가지를 적어보겠다.

Laravel Carbon 또는 정규식을 이용한 방법이다.

 

 

※ 주어진 문자열 $dateString = '20180101000108'이 'Y-m-d H:i:s'형식인지 확인 후 날짜 포멧으로 변환.

/**
* Laravel Carbon 사용
**/

use Carbon\Carbon;

$dateString = '20180101000108';
// 'Y-m-d H:i:s'형식 확인 
if (Carbon::hasFormat($dateString, 'Y-m-d H:i:s') === false) {
	// 주어진 형식이 날짜 포멧이 아닐 경우 변환
	$formattedDate = Carbon::createFromFormat('YmdHis', $dateString)->format('Y-m-d H:i:s');
}

echo $formattedDate; // 2018-01-01 00:01:08


/**
* DateTime객체 사용
**/

$dateString = '20180101000108';
// 'Y-m-d H:i:s'형식 확인
$date = DateTime::createFromFormat('Y-m-d H:i:s', $dateString);

if ($date === false) {
    // 주어진 포맷으로 변환
    $formattedDate = DateTime::createFromFormat('YmdHis', $dateString)->format('Y-m-d H:i:s');
}

echo $formattedDate;  // 2018-01-01 00:01:08


/**
* 정규식 사용
**/

$dateString = '20180101000108';
// 'Y-m-d H:i:s'형식 확인
$pattern = "/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/";

if (!preg_match($pattern, $dateString)) {
	// 주어진 형식이 날짜 포멧이 아닐 경우 변환
	$formattedDate = preg_replace('/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/', '$1-$2-$3 $4:$5:$6', $dateString);
}

echo $formattedDate; // 2018-01-01 00:01:08
반응형

댓글