如果我有这样的代码:

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

10-06 01:31