정규식 날짜값 변환
본문
$_date = str_replace("am", "am", $list[$i]['subject']);
$_date = str_replace("pm", "pm", $list[$i]['subject']);
이와같이 함수를 만들어 호출하였고 결과값은 2020 / 04 / 30 (Thu) pm 16 입니다
2020 / 04 / 30 (Thu) pm 16 이 날짜에 대한 결과값을 정규식으로 변환시키려합니다.
$date = preg_replace('/(.+)/\s+(.+)/\s+(.+)\s+(.+)(am|pm)\s+(.+)/', '$2/$3/$1 $6:00:00', $_date);
결과치는 07/27/2017 17:00:00 이와같은 형태로 나오게 하려고합니다.
정규식 부분을 어떻게 처리하면될까요?
답변 2
#1. str_replace('am', 'am', ... 무의미한 치환
#2. pm 16 ... 이상한 시간
/**
* Escape 처리 ... 2020 \/ 04 \/ 30 \(Thu\) pm 16
* 그룹 & 패턴 ... (\d+) \/ (\d+) \/ (\d+) \([a-zA-Z]{3}\) [a|p]m (\d+)
*/
$_date = '2020 / 04 / 30 (Thu) pm 16';
$date = preg_replace('/(\d+) \/ (\d+) \/ (\d+) \([a-zA-Z]{3}\) [a|p]m (\d+)/', '$2/$3/$1 $4:00:00', $_date);
// 04/30/2020 16:00:00
* 대부분의 정상적인 날짜시간 문자열이라면 아래처럼 [속도는 느리지만] 간단하게 구할 수 있습니다.
$date = date('m/d/Y H:i:s', strtotime($list[$i]['subject']));
!-->정규식을 다 활용한건 아니지만 문자열 처리로 하면 어떨까요?
$_date = preg_replace("/[^0-9]*/s", "", $_date);
$_date = date('m/d/Y H:i:s',strtotime(substr($_date,0,8).'T'.substr($_date,-2).':00:00'));
답변을 작성하시기 전에 로그인 해주세요.