我try 解析邮箱中的日期标头.
有时,邮箱有这样的日期标题:
Mon, 18 Jul 2011 05:05:53 UT
看起来像是在
所以我为此写了一个测试:
public void testParser() throws ParseException {
SimpleDateFormat FULL_FORMAT = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.ENGLISH);
try {
String baddate = "Mon, 18 Jul 2011 05:05:53 UT";
System.out.println("NOW: " + FULL_FORMAT.format(new Date()));
System.out.println("THEN: " + FULL_FORMAT.parse(baddate + "C"));
System.out.println("---");
System.out.println(FULL_FORMAT.parse(baddate));
} catch (Exception e) {
e.printStackTrace(System.out);
}
System.out.println("UTC: " + TimeZone.getTimeZone("UTC"));
System.out.println("UT: " + TimeZone.getTimeZone("UT"));
}
这是输出结果:
[INFO] Running de.e_nexus.web.rm.mail.TestDateParser
NOW: Thu, 29 Feb 2024 11:50:52 +0100
THEN: Mon Jul 18 07:05:53 CEST 2011
---
java.text.ParseException: Unparseable date: "Mon, 18 Jul 2011 05:05:53 UT"
at java.base/java.text.DateFormat.parse(DateFormat.java:399)
at de.e_nexus.web.rm.mail/de.e_nexus.web.rm.mail.TestDateParser.testParser(TestDateParser.java:17)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.apache.maven.surefire.junit.PojoTestSetExecutor.executeTestMethod(PojoTestSetExecutor.java:104)
at org.apache.maven.surefire.junit.PojoTestSetExecutor.execute(PojoTestSetExecutor.java:63)
at org.apache.maven.surefire.junit.JUnit3Provider.executeTestSet(JUnit3Provider.java:131)
at org.apache.maven.surefire.junit.JUnit3Provider.invoke(JUnit3Provider.java:93)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
UTC: sun.util.calendar.ZoneInfo[id="UTC",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
UT: sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.044 s -- in de.e_nexus.web.rm.mail.TestDateParser
时区UT明显存在(可能与UTC相似或相同),但Java不支持时区UT AFAICT.
将UT重写为UTC是否保存?