确定使用了哪个 DateTimePattern 模式 joda

Determine which DateTimePattern pattern was used joda

如果我有这样的代码:

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 日期时间时是否提供了时区?

您始终可以使用 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