java日期格式-GMT 0700(PDT)
这是我需要处理的日期格式java日期格式-GMT 0700(PDT),java,simpledateformat,Java,Simpledateformat,这是我需要处理的日期格式 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匹配 更准确地说,格式如下: Z与-0700零件匹配 GMT是固定的。用一些引语来逃避它
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
匹配
更准确地说,格式如下:
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:
对于以下示例:2013年8月21日星期三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
谢谢阿诺·德诺耶尔的编辑 等等,我不明白。根据文档:,z
匹配GMT
部分,z
匹配-0700
部分。根据该文档,z
可以匹配GMT-08:00
,而不是GMT-0800
。这就是为什么必须手动隔离GMT
零件的原因z
也可以单独捕获GMT
,但它将被视为GMT+00:00
。因此,使用另一个Z
(GMT+00:00-0700
=>2个时区)是没有意义的。对不起,这是一个输入错误。我的意思是z
匹配PDT
,和z
匹配-0700
。我想你应该在这里切换z
和z
,对吗?对!(我编辑)事实上,这段代码是偶然产生的,我找到了原因:z
是一般时区
,但javadoc告诉我们,对于解析,简单时区是可以接受的,反之亦然。