2015-11-02 34 views
0

這不是strtotime()容易...PHP IMAP得到電子郵件日期出現時間

我回用PHP IMAP電子郵件的日期。當我返回一個日期,我得到這樣的格式:

21 May 2015 20:48:36 -0400 
Fri, 15 May 2015 00:13:12 +0000 
Fri, 7 Aug 2015 07:11:42 -0400 (EDT) 
Fri, 4 Sep 2015 11:03:15 -0400 
Mon, 10 Aug 2015 22:04:10 +0000 
Tue, 14 Jul 2015 12:54:47 -0400 
Sun, 21 Jun 2015 10:49:06 +0000 
Fri, 12 Jun 2015 17:35:26 +0000 
Thu, 27 Aug 2015 11:47:55 -0400 
Mon, 20 Jul 2015 12:43:45 -0400 
Fri, 18 Sep 2015 07:47:04 -0400 (EDT) 
etc. 

正如你所看到的,日期是不完全一致的。其中一個日期沒有星期幾(星期五)。其中一些日期有一個(EDT)標籤,其他日期沒有。

我嘗試過使用strtotime($date),但我相信因爲它在其中的某些時區有時間,所以它會搞亂日期。

有沒有辦法將這些非常奇怪的時間轉換成時代?

+0

從文檔*「這個函數的每一個參數使用默認的時區,除非在參數中指定的時區要小心不要在每個參數中使用不同的時區,除非這是有意的。請參閱date_default_timezone_get()以定義默認時區的各種方式。「* –

回答

1

你可以處理它隨着時間的字符串前清理您的輸入:

$input = "21 May 2015 20:48:36 -0400 
Fri, 15 May 2015 00:13:12 +0000 
Fri, 7 Aug 2015 07:11:42 -0400 (EDT) 
Fri, 4 Sep 2015 11:03:15 -0400 
Mon, 10 Aug 2015 22:04:10 +0000 
Tue, 14 Jul 2015 12:54:47 -0400 
Sun, 21 Jun 2015 10:49:06 +0000 
Fri, 12 Jun 2015 17:35:26 +0000 
Thu, 27 Aug 2015 11:47:55 -0400 
Mon, 20 Jul 2015 12:43:45 -0400 
Fri, 18 Sep 2015 07:47:04 -0400 (EDT)"; 

$output = ''; 

$lines = explode("\n", $input); 

foreach($lines as $line) { 
    $output .= preg_replace('/(\w{3},)|(\(\w{3}\))/', '', $line)."\n"; 
} 

echo $output; 
+0

太棒了!謝謝!我所需要的只是正則表達式的一部分,這很好用。謝謝! – ntgCleaner

相關問題