这是我需要处理的日期格式
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)");
这是我需要处理的日期格式
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)");
不,它不是固定的。这是一个时区。您可以将其与Z
日期格式匹配。
更准确地说,在SimpleDateFormat格式中:
Z
匹配-0700
部分。GMT
是固定的。用一些引号来逃避它。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 ...
感谢上面的 Arnaud Denoyelle 的编辑!