确定使用哪个DateTimePattern模式joda

时间:2016-05-29 09:59:54

标签: java datetime jodatime

如果我有这样的代码:

DateTimeParser[] parsers = {
        DateTimeFormat.forPattern("yyyyMM").getParser(),
        DateTimeFormat.forPattern("yyyyMMdd").getParser(),
        DateTimeFormat.forPattern("yyyyMMddHHmm").getParser(),
        DateTimeFormat.forPattern("yyyyMMddHHmmZ").getParser(),
        DateTimeFormat.forPattern("yyyyMMddHHmmss.SSSSZ").getParser()
};

DateTimeFormatter formatter = new DateTimeFormatterBuilder().append(null, parsers).toFormatter();

final DateTime dateTime = formatter
        .parseDateTime(dateString);

return new Timestamp(dateTime.getMillis());

如何确定使用了哪种模式?我想仅在没有明确提供时区的情况下强制使用UTC时区。即,当Z缺失时

或者,如何在解析joda datetime时确定是否提供了时区?

1 个答案:

答案 0 :(得分:1)

您始终可以使用withOffsetParsed()从下面的代码获取区域,并与默认区域进行比较

String dateString = "2016052914346.2354+0300";
DateTimeParser[] parsers = {DateTimeFormat.forPattern("yyyyMM").getParser(),DateTimeFormat.forPattern("yyyyMMddHHmmss.SSSSZ").getParser()};
DateTimeFormatter formatter = new DateTimeFormatterBuilder().append(null, parsers).toFormatter();
DateTime dateTime = formatter.withOffsetParsed().parseDateTime(dateString);
DateTimeZone zone = dateTime.getZone();//+03.00