如果我有这样的代码:
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时确定是否提供了时区?
答案 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