将符合 ISO 8601 的字符串转换为 KitKat 上的纪元

问题描述 投票:0回答:1

我有以下符合 ISO8601 标准的字符串:

2024-03-25T11:34:15.000Z

我需要将其转换为java日期。我找到了以下解决方案:

Date date = Date.from(Instant.parse("2024-03-25T11:34:15.000Z"));
long epoch = date.getTime()); 

但是,这至少需要 Android Oreo。我需要一个可以解析 KitKat 的转换器。有什么想法吗?

尝试了以下解决方案,但遇到了同样的问题:

  1. 将符合 ISO 8601 的字符串转换为 ZonedDateTime
  2. 使用java8将字符串转换为日期

我还通过使用 JAXB 找到了一个解决方案,但我在某处读到它使我的 APK 膨胀了 9MB!有了它,解决方案就可以这么简单:

javax.xml.bind.DatatypeConverter.parseDateTime(iso8601Date).getTimeInMillis();
java android iso8601
1个回答
0
投票

这解决了我的问题。

private long convertDateToLong(@NonNull String iso8601Date) {
    long epoch = -1;
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.US);
    try {
        Date date = sdf.parse(iso8601Date);
        if(date != null)
            epoch = date.getTime();
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return epoch;
}
© www.soinside.com 2019 - 2024. All rights reserved.