2010-05-11 161 views
1

嘿,長話短說我繼承了一些可怕的代碼。因此,由於日期的格式,比較日期時字符串比較有問題。我試圖將日期轉換爲有效的DateFormat語法,以便我可以運行適當的比較。PHP日期時間正則表達式

這些都是當前格式的一些樣品:

12/01/10 at 8:00PM 

12/31/10 at 12:00PM 

12/10/09 at 5:00AM 

等等。我想將其轉換爲YYYYMMDDHHMM格式,即201012012000作比較。如果任何人都可以給我一個快速的正則表達式片段來做到這一點,現在我正在爲正則表達式打磚牆。我可以通過多次爆炸字符串來做到這一點,但我寧願以更有效的方式做到這一點。

謝謝!

+0

正則表達式不會用'20'代替'8 ... PM'。不是一個好主意。我確定有一個PHP日期解析器可以使用。 – Kobi 2010-05-11 14:34:13

+1

如果你去掉「at」文字,這看起來好像經過了「strtotime」。 – ceejayoz 2010-05-11 14:47:34

回答

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 2010-05-11 15:49:13