Android中采用“ YYYY-MM-DDTHH:MM.000z”(ISO 8601)格式的当前日期时间

use*_*815 1 java android iso8601

您好,我是android开发的新手,现在正在开发Android代码,我需要以这种格式获取当前日期和时间

YYYY-MM-DDTHH:MM.000z
Run Code Online (Sandbox Code Playgroud)

例如2013-11-26T03:16:00.000Z

任何帮助将不胜感激

Bas*_*que 5

tl; dr

您要求将ISO 8601格式设置为UTC时区。

Instant.now().toString()
Run Code Online (Sandbox Code Playgroud)

2018-01-25T22:50:24.702645Z

java.time

解析或生成字符串时,java.time类默认使用标准的ISO 8601格式。

Instant级表示时间轴上的时刻UTC,分辨率为纳秒(最多小数的9个位数)。

获取UTC的当前时刻:

Instant instant = Instant.now() ;
Run Code Online (Sandbox Code Playgroud)

生成标准ISO 8601格式的字符串:

String output = instant.toString() ;  // Generate string in standard format.
Run Code Online (Sandbox Code Playgroud)

朝另一个方向,解析这样的字符串。

Instant instant = Instant.parse( "2013-11-26T03:16:00.000Z" );
Run Code Online (Sandbox Code Playgroud)

搜索栈溢出了java.time类如很多讨论ZoneIdZonedDateTimeOffsetDateTime

乔达时代

更新:Joda-Time项目现在处于维护模式,团队建议迁移到java.time类。

ISO 8601格式是Joda-Time 2.3库的默认格式。

Instant.now().toString()
Run Code Online (Sandbox Code Playgroud)

运行时...

Instant instant = Instant.now() ;
Run Code Online (Sandbox Code Playgroud)

关于java.time

java.time框架是建立在Java 8和更高版本。这些类取代麻烦的老传统日期时间类,如java.util.DateCalendar,和SimpleDateFormat

现在处于维护模式Joda-Time项目建议迁移到java.time类。

要了解更多信息,请参见Oracle教程。并在Stack Overflow中搜索许多示例和说明。规格为JSR 310

在哪里获取java.time类?

ThreeTen-额外项目与其他类扩展java.time。该项目为将来可能在java.time中添加内容提供了一个试验场。你可能在这里找到一些有用的类,比如IntervalYearWeekYearQuarter,和更多