15

使用 android 和 joda time lib - 我正在尝试转换用户的时区,以便稍后将其格式化为:例如 2012-11-12T21:45:00+02:00。

DateTimeZone zone = DateTimeZone.forID( TimeZone.getDefault().getID());

上面的代码失败了 - 任何人都知道如何获取“Europe/London”(Timezone.getID)并将其转换为偏移量,以便我可以将其放入 ISO 8601 格式?

4

2 回答 2

25

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

示例代码:

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

您可以在SimpleDateFormat中查看文档

问候。

于 2012-11-22T18:36:35.540 回答
9

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

归功于乔达斯蒂芬。

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

于 2018-02-23T18:54:59.537 回答