【发布时间】:2018-10-15 17:14:09
【问题描述】:
我有一个从 API 返回的日期字符串。日期就是这种格式。
2018-10-15T17:52:00Z
现在,我想将此字符串转换为 UTC 日期格式。这是我使用的代码,
private static final String DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'";
try {
String expiryDateString = "2018-10-15T17:52:00Z";
final SimpleDateFormat formatter = new SimpleDateFormat(DATE_FORMAT,Locale.US);
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
return formatter.parse(expiryDateString);
} catch (final ParseException e) {
return null;
}
此方法将日期返回为
2018 年 10 月 15 日星期一 13:52:00 EDT
我不能使用 Java 8 函数。有什么方法可以在不使用 Java 8 方法的情况下将字符串转换为 UTC 日期时间?
【问题讨论】:
-
“我想将此字符串转换为UTC日期格式” 那是 UTC日期格式。
Z表示 UTC 时区。 -
@Andreas 如何将此 UTC 日期时间字符串转换为正确的 UTC 日期?
-
您的代码已经这样做了,因为
java.util.Date始终是 UTC 日期。您看到的EDT时区在 UTC 日期值被格式化以供显示时应用。有缺陷的是您的显示逻辑,而不是问题中的代码。 -
请定义 Java 8 方法。即使在较低的 API 级别上,您也可以使用 java.time,这是 Java 8 首次推出的现代 Java 日期和时间 API。它已被向后移植,并且向后移植进一步适用于 Android。您需要 ThreeTenABP 库,请参阅 How to use ThreeTenABP in Android Project。你应该想要,因为你使用的
SimpleDateFormat类不仅已经过时了,而且出了名的麻烦。现代 API 更易于使用。
标签: java android android-date date