两种解决方案:
- OffsetDateTime(Java 8 内置)
- joda(所有强大的日期 - 第 3 方图书馆)
OffsetDateTime 在这里显然是一个更好的选择,但如果 joda 从现在开始已经被证明非常强大,并且如果有人更喜欢使用它,那么下面的代码有两者的示例
两种方法的代码示例如下:
public class Demo {
public static void jodaTimeStuff(String dateString, DateTimeZone dtz) {
System.out.println(StringUtils.leftPad(dateString, 29, " ") + "\t------->\t" + ISODateTimeFormat.dateTime().parseDateTime(dateString).toDateTime(dtz));
System.out.println(StringUtils.leftPad(dateString, 29, " ") + "\t------->\t" + OffsetDateTime.parse(dateString).toZonedDateTime());
}
public static void main(String[] args) throws Exception {
jodaTimeStuff("2010-03-01T08:00:00.000Z", DateTimeZone.UTC);
jodaTimeStuff("2010-03-01T08:00:00.000Z", DateTimeZone.forTimeZone(TimeZone.getTimeZone("Asia/Kolkata")));
jodaTimeStuff("2010-03-01T00:00:00.000-08:00", DateTimeZone.UTC);
jodaTimeStuff("2010-03-01T00:00:00.000-08:00", DateTimeZone.forTimeZone(TimeZone.getTimeZone("Asia/Kolkata")));
jodaTimeStuff("2010-03-01T00:00:00.000+05:30", DateTimeZone.UTC);
jodaTimeStuff("2010-03-01T00:00:00.000+05:30", DateTimeZone.forTimeZone(TimeZone.getTimeZone("Asia/Kolkata")));
jodaTimeStuff("2021-11-15T02:27:24.540288Z", DateTimeZone.UTC);
jodaTimeStuff("2021-11-15T02:27:24.540288Z", DateTimeZone.forTimeZone(TimeZone.getTimeZone("Asia/Kolkata")));
}
}
输出:
2010-03-01T08:00:00.000Z -------> 2010-03-01T08:00:00.000Z
2010-03-01T08:00:00.000Z -------> 2010-03-01T08:00Z
2010-03-01T08:00:00.000Z -------> 2010-03-01T13:30:00.000+05:30
2010-03-01T08:00:00.000Z -------> 2010-03-01T08:00Z
2010-03-01T00:00:00.000-08:00 -------> 2010-03-01T08:00:00.000Z
2010-03-01T00:00:00.000-08:00 -------> 2010-03-01T00:00-08:00
2010-03-01T00:00:00.000-08:00 -------> 2010-03-01T13:30:00.000+05:30
2010-03-01T00:00:00.000-08:00 -------> 2010-03-01T00:00-08:00
2010-03-01T00:00:00.000+05:30 -------> 2010-02-28T18:30:00.000Z
2010-03-01T00:00:00.000+05:30 -------> 2010-03-01T00:00+05:30
2010-03-01T00:00:00.000+05:30 -------> 2010-03-01T00:00:00.000+05:30
2010-03-01T00:00:00.000+05:30 -------> 2010-03-01T00:00+05:30
2021-11-15T02:27:24.540288Z -------> 2021-11-15T02:27:24.540Z
2021-11-15T02:27:24.540288Z -------> 2021-11-15T02:27:24.540288Z
2021-11-15T02:27:24.540288Z -------> 2021-11-15T07:57:24.540+05:30
2021-11-15T02:27:24.540288Z -------> 2021-11-15T02:27:24.540288Z
示例代码中使用的一些依赖项(一个仅用于格式化,另一个用于 joda:
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.10.13</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.8</version>
</dependency>
Dua me yaad rakhna(请在祈祷中记住我)