정규식 날짜값 변환

정규식 날짜값 변환

QA

정규식 날짜값 변환

본문

$_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'));
 

답변을 작성하시기 전에 로그인 해주세요.
전체 160
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT