7

这是我需要处理的日期格式

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

2 回答 2

13

不,它不是固定的。这是一个时区。您可以将其与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);
于 2013-08-28T16:37:39.313 回答
4

这是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 ...

感谢上面的 Arnaud Denoyelle 的编辑!

于 2013-08-28T16:42:26.330 回答