java JodaTime删除秒

时间:2016-04-05 20:07:50

标签: java datetime jodatime iso8601

我正在使用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?

1 个答案:

答案 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);

我相信这正是你想要的。