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)"); 

不,这不是固定的。 这是一个TimeZone。 您可以在日期格式中将其与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); 

这是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 + "..."); } } 

示例输出:日期= 2013年8月20日星期二23:00:00 PDT 2013 …

Thanx到Arnaud Denoyelle上面的编辑!