如何使用非 GMT 时区解析 TZ 格式时间
How to parse TZ format time with non-GMT time zone
我有两种格式的时间字符串。
2019-03-01T22:22:50.591-08:00
2019-03-01T22:22:50.591Z
我正在使用以下 Java 片段来解析
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:SS" +
".SSS'Z'", Locale.US);
Date date = df.parse(dateString);
它在第二个字符串上工作,但在第一个字符串上失败。有什么共同的代码可以解析它们?
这可能是您要查找的内容:"yyyy-MM-dd'T'HH:mm:ss.SSSXXX"
Date parsed1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX", Locale.US).parse("2019-03-01T22:22:50.591Z");
System.out.println(parsed1); // Fri Mar 01 16:22:50 CST 2019
Date parsed2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX", Locale.US).parse("2019-03-01T22:22:50.591-08:00");
System.out.println(parsed2); // Sat Mar 02 00:22:50 CST 2019
正如 Basil 在下面指出的那样,如果您是 运行 Java 8+ 或 JSR 310 的向后端口,这些也适用:
OffsetDateTime parsed1 = OffsetDateTime.parse("2019-03-01T22:22:50.591Z");
System.out.println(parsed1); // Fri Mar 01 16:22:50 CST 2019
OffsetDateTime parsed2 = OffsetDateTime.parse("2019-03-01T22:22:50.591-08:00");
System.out.println(parsed2); // Sat Mar 02 00:22:50 CST 2019
我有两种格式的时间字符串。
2019-03-01T22:22:50.591-08:00
2019-03-01T22:22:50.591Z
我正在使用以下 Java 片段来解析
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:SS" +
".SSS'Z'", Locale.US);
Date date = df.parse(dateString);
它在第二个字符串上工作,但在第一个字符串上失败。有什么共同的代码可以解析它们?
这可能是您要查找的内容:"yyyy-MM-dd'T'HH:mm:ss.SSSXXX"
Date parsed1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX", Locale.US).parse("2019-03-01T22:22:50.591Z");
System.out.println(parsed1); // Fri Mar 01 16:22:50 CST 2019
Date parsed2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX", Locale.US).parse("2019-03-01T22:22:50.591-08:00");
System.out.println(parsed2); // Sat Mar 02 00:22:50 CST 2019
正如 Basil 在下面指出的那样,如果您是 运行 Java 8+ 或 JSR 310 的向后端口,这些也适用:
OffsetDateTime parsed1 = OffsetDateTime.parse("2019-03-01T22:22:50.591Z");
System.out.println(parsed1); // Fri Mar 01 16:22:50 CST 2019
OffsetDateTime parsed2 = OffsetDateTime.parse("2019-03-01T22:22:50.591-08:00");
System.out.println(parsed2); // Sat Mar 02 00:22:50 CST 2019