ISO 8601 字符串到日期/时间对象在安卓

2022-08-31 19:43:37

我有一个标准ISO 8601格式的字符串,其中包含从Web服务返回的日期/时间,如下所示:

String dtStart = "2010-10-15T09:27:37Z"

如何将其放入时间或日期等对象中?我最初想以不同的格式输出它,但稍后需要用它做其他事情(即可能以不同的格式使用)。

干杯


答案 1
String dtStart = "2010-10-15T09:27:37Z";  
SimpleDateFormat  format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");  
try {  
    Date date = format.parse(dtStart);  
    System.out.println(date);  
} catch (ParseException e) {  
    e.printStackTrace();  
}

这就是你正在寻找的。有关于这个问题的现有帖子


答案 2

这个问题在2010年被问到,当时是正确的,要么是Joda-Time,要么是你应该使用的工具。现在已经很久很久以前了。今天使用SimpleDateFormat

    Instant iStart = Instant.parse(dtStart);

是的,就是这么简单。您的字符串采用 ISO 8601 格式,现代 Java 日期和时间 API 中的类在没有任何显式格式化程序的情况下解析 ISO 8601。 只是这些类之一。java.timeInstant

编辑:问题:需要Android API 26 - 支持旧版本怎么样?

是的,在较旧和较新的Android设备上运行良好。它只需要至少Java 6java.time

  • 在Java 8及更高版本以及较新的Android设备(从API级别26开始)中,现代API是内置的。
  • 在Java 6和7中,获取ThreeTen Backport,即新类的backport(ThreeTen for JSR 310;请参阅底部的链接)。
  • 在(较旧的)Android上使用Android版本的ThreeTen Backport。它被称为ThreeTenABP。并确保从中导入带有子包的日期和时间类。org.threeten.bp

链接


推荐