2010-05-11 3 views
1

안녕하세요, 긴 이야기가 짧습니다. 나는 끔찍한 코드를 물려 받았습니다. 결과적으로 문자열 비교는 날짜의 형식으로 인해 날짜를 비교할 때 버그가 발생합니다. 적절한 비교를 실행할 수 있도록 날짜를 유효한 DateFormat 구문으로 변환하려고합니다. 등PHP DateTime Regex

12/01/10 at 8:00PM 

12/31/10 at 12:00PM 

12/10/09 at 5:00AM 

과 :

은 현재 형식의 몇 가지 샘플입니다. 비교 목적으로 YYYYMMDDHHMM 형식 (예 : 201012012000)으로 변환하고 싶습니다. 누구든지이 일을 할 수있는 빠른 정규식 스 니펫을 줄 수 있다면 지금 당장은 정규식을 위해 벽돌 벽을 치고 있습니다. 나는 여러 번 등을 통해 문자열을 폭발시켜 그것을 할 수 있지만, 나는보다 효율적인 방법으로 그것을하고 싶습니다.

감사합니다.

+0

정규식은 '8 ... PM'을 '20'으로 대체하지 않습니다. 별로 좋은 생각이 아닙니다. 당신이 사용할 수있는 php date 파서가 있다고 확신합니다. – Kobi

+1

"at"텍스트를 제거하면 strtotime을 통해 정상적으로 처리됩니다. – ceejayoz

답변

3

PHP 5.3에 내장 된 DateTime 클래스를 사용하면 이상한 형식의 날짜를 사용하는 것이 매우 쉽습니다.

정규식 또는 공상 아무것도 필요가 없습니다 : 그것은 날짜 객체가

$date = DateTime::createFromFormat('m/d/y \a\t g:iA', '12/10/09 at 5:00AM'); 
print_r($date); 

일단 당신이 원하는 어떤 형식으로 할 수 있습니다.

+0

'DateTime' 클래스는 PHP 5.2.0부터 사용되어 왔지만, DateTime :: createFromFormat은 실제로 5.3.0에서 소개되었습니다. – salathe