我正在使用JodaTime创建ISO 8601字符串。
DateTime jodatime = new DateTime(2016, 04, 05, 23, 59, 59, 999, DateTimeZone.UTC);
String converted = jodatime.toDateTimeISO().toString();
现在,我得到以下内容:
2016-04-06T06:59:59.999Z
但是,我想截断/删除秒和毫秒。
2016-04-05T23:59Z
有没有人知道如何用最少的hacky方式做到这一点? 任何人都可以告诉我,日期解析库是否可以识别缩短版的ISO8601?
答案 0 :(得分:3)
格式化Joda Time值的常规方法是使用格式化程序。在这种情况下,the format you want is already available,除了Z:
DateTimeFormatter formatter = ISODateTimeFormat.dateHourMinute();
String text = formatter.print(value);
Z
有点棘手 - 我不相信您可以使用简单模式(DateTimeFormat.forPattern
)准确指定您想要的内容,但您可以使用DateTimeFormatterBuilder
:
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendYear(4, 9)
.appendLiteral('-')
.appendMonthOfYear(2)
.appendLiteral('-')
.appendDayOfMonth(2)
.appendLiteral('T')
.appendHourOfDay(2)
.appendLiteral(':')
.appendMinuteOfHour(2)
.appendTimeZoneOffset("Z", true, 2, 4)
.toFormatter()
.withLocale(Locale.US);
我相信这正是你想要的。