如何使用 ThreeTenABP 将 java.util.Date 更改为 ISO 字符串

How can I change java.util.Date to ISO String using ThreeTenABP

提问人:amlwin 提问时间:6/1/2018 最后编辑:Anonymousamlwin 更新时间:12/31/2019 访问量:864

问:

我正在使用ThreeTenABP来转换Android的日期时间。 我的问题是我怎样才能通过ThreeTenABP将a更改为ISO字符串(格式是)?java.util.Date2018-05-24T02:33:10.062Z

java android 日期时间 ISO8601 threetenbp

评论


答:

1赞 Kimses 6/1/2018 #1

我不知道android,但如果可用,您可以执行以下操作:java.text.SimpleDateFormat

new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").format(new Date())

评论

0赞 amlwin 6/1/2018
目前你的答案适合我。但我也需要threetenabp
1赞 Meno Hochschild 6/1/2018
转义模式字母“Z”是一个严重的错误,会导致错误的数据。但是使用模式字母“X”是一个不错的选择。
0赞 Anonymous 6/1/2018
有一种方法可以获取具有正确时间和 with 的字符串(至少如果您的 Android API 级别足够高),但这并不简单。由于既过时又臭名昭著,我宁愿不打扰,而是使用 Meno Hochschild 的好答案ZSimpleDateFormatSimpleDateFormat
0赞 Kimses 6/1/2018
是的,当然最好在格式上设置时区。下次我在发布答案时会更加谨慎。
4赞 Meno Hochschild 6/1/2018 #2

ThreetenABP解决方案可以如下所示:

java.util.Date d = ...;
org.threeten.bp.Instant instant = org.threeten.bp.DateTimeUtils.toInstant(d);
String iso = instant.toString();

如果您希望更好地控制格式,则可以将即时转换为(或更好地转换为 OffsetDateTime)并使用专用的 .ZonedDateTimeDateTimeFormatter

评论

0赞 amlwin 6/4/2018
你也拯救了我的一天。这是我的问题更相关的答案
0赞 Meno Hochschild 6/4/2018
@OleV.V.我同意使用固定偏移量,因此类型在这里是自然的选择。已相应地调整了答案。OffsetDateTime
0赞 Алексей Виноградов 12/31/2019 #3

表达:

new Date().toInstant().toString()

结果

2019-12-31T06:32:37.997Z