How to parse “yyyy-MM-dd'T'HH:mm:ss.SSSXXX” date format to simple in Android?
如何在Android中解析此日期
谢谢。
我不知道后端开发人员是如何获得这种格式的。
我正在使用Java。
1 2 3 4 5 6 | DateTimeFormatter desiredFormatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm"); String backendDateTimeString ="2018-01-09T11:11:02.0+03:00"; OffsetDateTime dateTime = OffsetDateTime.parse(backendDateTimeString); String presentationDateTimeString = dateTime.format(desiredFormatter); System.out.println(presentationDateTimeString); |
这打印:
09.01.2018 11:11
请注意:我在格式模式字符串中使用大写
你的后端开发人员获得的格式
问题:我可以在Android上使用java.time吗?
是的,
- 在Java 8及更高版本和更新的Android设备(API级别26及更高版本)上,内置了现代API。
- 在Java 6和7中获取ThreeTen Backport,新类的后端端口(适用于JSR 310的ThreeTen;请参见底部的链接)。
-
在(较旧的)Android上使用Android版的ThreeTen Backport。它被称为ThreeTenABP。并确保从子包中导入
org.threeten.bp 的日期和时间类(我的代码已使用这些导入进行测试)。
链接
-
Oracle教程:日期时间解释如何使用
java.time 。 -
Java规范请求(JSR)310,其中首先描述了
java.time 。 -
ThreeTen Backport项目,
java.time 的后端到Java 6和7(用于JSR-310的ThreeTen)。 - ThreeTenABP,Android版ThreeTen Backport
- 问题:如何在Android项目中使用ThreeTenABP,有一个非常详尽的解释。
- 维基百科文章:ISO 8601
如果您使用的是java,则可以使用带有模式的
1 2 3 4 5 6 7 8 9 10 11 12 | String date ="2018-01-09T11:11:02.0+03:00"; SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); SimpleDateFormat output = new SimpleDateFormat("dd.MM.yyyy hh:mm"); Date d = null; try { d = dateformat.parse(date /*your date as String*/); } catch (ParseException e) { e.printStackTrace(); } String formattedDate = output.format(d); Log.d("Date format","output date :" + formattedDate); |
输出是:
D/Date format: output date :09.01.2018 09:11
编辑:感谢@ OleV.V。,对于API> 26,或使用ThreeTenABP,我们可以使用
DateTimeFormatter,我们可以做类似的事情
1 2 3 4 5 6 7 | String date ="2018-01-09T11:11:02.0+03:00"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); DateTimeFormatter formatterOut = DateTimeFormatter.ofPattern("dd.MM.yyyy hh:mm"); LocalDate parsedDate = LocalDate.parse(date, formatter); String formattedDate = formatterOut.format(parsedDate); Log.d("Date format","output date :" + formattedDate); |
您可以使用SimpleDateFormat执行此操作。
以下是Java中的测试示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | String dateString ="2018-01-09T11:11:02.0+03:00"; String inPattern ="yyyy-MM-dd'T'HH:mm:ss.SSSXXX"; String outPattern ="dd.MM.yyyy hh:mm"; SimpleDateFormat inFormat = new SimpleDateFormat(inPattern, Locale.getDefault()); SimpleDateFormat outFormat = new SimpleDateFormat(outPattern, Locale.getDefault()); try { Date inDate = inFormat.parse(dateString); String outDate = outFormat.format(inDate); Log.e("TEST", outDate); } catch (ParseException e) { e.printStackTrace(); } |
这是Kotlin的一个经过测试的例子:
1 2 3 4 5 6 7 8 9 10 11 12 | val dateString ="2018-01-09T11:11:02.0+03:00" val inPattern ="yyyy-MM-dd'T'HH:mm:ss.SSSXXX" val outPattern ="dd.MM.yyyy hh:mm" val inFormat = SimpleDateFormat(inPattern, Locale.getDefault()) val outFormat = SimpleDateFormat(outPattern, Locale.getDefault()) val inDate = inFormat.parse(dateString) val outDate = outFormat.format(inDate) Log.e("TEST", outDate) |