Android中的ISO 8601字符串到日期/时间对象

nei*_*man 46 java parsing android iso8601

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

String dtStart = "2010-10-15T09:27:37Z"
Run Code Online (Sandbox Code Playgroud)

如何将其转换为时间或日期等对象?我最初想要以不同的格式输出它,但是稍后需要用它做其他的东西(也就是说可能以不同的格式使用).

干杯

Sei*_*dis 118

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();  
}
Run Code Online (Sandbox Code Playgroud)

这就是你要找的东西.有关于这个问题的现有帖子.

  • 如果您也有毫秒,那么这种格式对我有用 `yyyy-MM-dd'T'HH:mm:ss.SSS'Z'` (3认同)

Ole*_*.V. 6

这个问题是在2010年被问到的,当时正确的是SimpleDateFormatJoda-Time或者你应该使用的工具.现在已经有一段时间了.今天用

    Instant iStart = Instant.parse(dtStart);
Run Code Online (Sandbox Code Playgroud)

是的,就是这么简单.您的字符串是ISO 8601格式,java.time现代Java日期和时间API中的类解析ISO 8601而没有任何显式格式化程序.Instant只是其中一个类.

问题:我可以在Android上使用java.time吗?

是的,java.time适用于较旧和较新的Android设备.它至少需要Java 6.

  • 在Java 8及更高版本和更新的Android设备上(从API级别26,我被告知)现代API内置.
  • 在Java 6和7中获取ThreeTen Backport,新类的后端端口(适用于JSR 310的ThreeTen;请参见底部的链接).
  • 在(较旧的)Android上使用Android版的ThreeTen Backport.它被称为ThreeTenABP.并确保从org.threeten.bp子包中导入日期和时间类.

链接