2016-05-29 2 views
0

Wenn ich Code wie dieses:Bestimmen Sie, welche DateTimePattern Muster joda verwendet wurde

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()); 

Wie kann ich feststellen, welche Muster verwendet wurde? Ich möchte die UTC-Zeitzone nur in Situationen erzwingen, in denen keine Zeitzone explizit angegeben ist. dh wenn Z fehlt

Alternativ, wie kann ich einfach feststellen, ob eine Zeitzone bei der Analyse eines Joda Datetime bereitgestellt wurde?

Antwort

1

Sie können immer die Zone aus dem folgenden Code erhalten mit withOffsetParsed() und vergleichen

mit Ihrer Standard-Zone
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 
Verwandte Themen