2013-08-28 72 views
3

這是日期格式,我需要處理java的日期格式 - GMT 0700(PDT)

Wed Aug 21 2013 00:00:00 GMT-0700 (PDT) 

但我沒有得到什麼,最後兩個部分。是否修復了GMT-0700?應該是這樣的嗎?

SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss 'GMT-0700' (z)"); 

回答

8

不,它不是固定的。這是一個時區。您可以將它與日期格式的Z相匹配。

爲了更加精確,在SimpleDateFormat格式:

  • Z-0700部分相匹配。
  • GMT已修復。用一些引號逃脫它。
  • z匹配PDT部分。 (PDT =太平洋夏令時)。
  • 圍繞PDT的括號是固定的。用圓括號將它們轉義。

您可以使用以下格式解析您的日期:

EEE MMM dd yyyy HH:mm:ss 'GMT'Z '('z')' 

另一句話Wed Aug包含英語日期和月份,所以你必須與你的SimpleDateFormat 或翻譯使用英語語言環境將失敗

new SimpleDateFormat("*format*", Locale.ENGLISH); 
+0

等等,我不明白。根據文檔:http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html,'z'匹配'GMT'部分,'Z'匹配'-0700'部分。 – Cacheing

+0

根據這份文件,'z'可以匹配'GMT-08:00',而不是'GMT-0800'。這就是爲什麼你必須手動隔離'GMT'部分。 'z'也可以單獨接收'GMT',但它會被認爲是'GMT + 00:00'。因此,再有一個'Z'('GMT + 00:00 -0700'=> 2時區)是沒有意義的。 –

+0

對不起,這是一個錯字。我的意思是'z'匹配'PDT','Z'匹配'-0700'。我想你應該在這裏切換'z'和'Z',是嗎? – Cacheing

1

這裏的Javadoc:

http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

對於這個例子:Wed Aug 21 2013 00:00:00 GMT-0700 (PDT),你想要的格式如下:

import java.text.SimpleDateFormat; 
import java.util.Date; 

public class JavaDate { 

    public static void main (String[] args) throws Exception { 

    String s= "Wed Aug 21 2013 00:00:00 GMT-0700 (PDT)"; 
    SimpleDateFormat sdf = 
     new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss 'GMT'z '('Z')'"); 
    Date d = sdf.parse (s); 
    System.out.println ("Date=" + d + "..."); 
    } 
} 

輸出示例:日期=星期二八月20 23:00:00 PDT 2013 ...

感謝上面的Arnaud Denoyelle他的編輯!