【问题标题】:Convert Date String to UTC format [duplicate]将日期字符串转换为 UTC 格式 [重复]
【发布时间】: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


【解决方案1】:

2018 年 10 月 15 日星期一 13:52:00 EDT

是 date.toString() - Date 类的结果。

日期被正确解析,只是显示方式不同。 如果你想检查解析是否正确,可以这样检查:

String expiryDateString = "2018-10-15T17:52:00Z";
final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US);
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = formatter.parse(expiryDateString);
assertEquals(expiryDateString, formatter.format(date));

【讨论】:

    猜你喜欢
    • 2016-02-28
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多