Android时间在iso 8601

Ran*_*nco 10 timezone android iso8601 jodatime

使用android和joda时间库 - 我试图转换用户的时区,以便稍后格式化为:2012-11-12T21:45:00 + 02:00.

DateTimeZone zone = DateTimeZone.forID( TimeZone.getDefault().getID());
Run Code Online (Sandbox Code Playgroud)

上面的代码失败了 - 任何人都知道如何把"欧洲/伦敦"(Timezone.getID)转换成偏移量,所以我可以把它换成ISO 8601格式?

Lui*_*uis 15

如果我正确理解您的目标,您可以直接使用该SimpleDateFormat课程.

示例代码:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.UK);
String formattedDate = sdf.format(new Date());
Run Code Online (Sandbox Code Playgroud)

您可以在SimpleDateFormat中查看docmentation

问候.

  • 我需要这种格式 - 11-12T21:45:00 + 02:00 (3认同)

小智 6

API级别26添加了对Java中许多时间和日期类的支持。因此现在也可以应用此解决方案:https : //stackoverflow.com/a/25618897/3316651

// works with Instant
Instant instant = Instant.now();
System.out.println(instant.format(DateTimeFormatter.ISO_INSTANT));

// works with ZonedDateTime 
ZonedDateTime zdt = ZonedDateTime.now();
System.out.println(zdt.format(DateTimeFormatter.ISO_INSTANT));

// example output
2014-09-02T08:05:23.653Z
Run Code Online (Sandbox Code Playgroud)

感谢JodaStephen。

Android文档:https//developer.android.com/reference/java/time/format/DateTimeFormatter.html#ISO_INSTANT

  • 仅供参考:许多 *java.time* 功能在 [***ThreeTen-Backport***](http://www.thirden.org/thirdenbp/) 项目中向后移植到 Java 6 和 Java 7。在 [***ThreeTenABP***](https://github.com/JakeWharton/ThreeTenABP) 项目中进一步针对早期 Android 进行了调整。请参阅[*如何使用 ThreeTenABP...*](http://stackoverflow.com/q/38922754/642706)。 (2认同)