반응형
최근 회사에서 옛날 데이터를 옮기는 작업을 했는데
날짜 데이터를 '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
반응형
'PHP > Laravel' 카테고리의 다른 글
[Laravel+JS] 카카오톡 메시지 나에게 보내기 API (0) | 2023.09.06 |
---|---|
[Laravel] Macbook M1 Pro에서 node 14 버전 설치 (0) | 2022.05.16 |
[Laravel] Valet 에서 laravel 설치 (0) | 2022.05.11 |
[Laravel] Mac 발렛 Valet 설치 (0) | 2022.05.07 |
홈스테드 오류 모음 (0) | 2021.05.12 |
댓글