2012-03-30 13 views
0

Ich habe ein Datum String "Sat Jan 28 00:00:00 IST 2012" und ich versuche, es mit DateTimeFormatter von Joda zu analysieren. Ich habe den folgenden Code, weiß nicht wo, es ging schief.Wie zu analysieren Datum String mit Gebietsschema

DateTimeFormatter dateFmt = DateTimeFormat 
      .forPattern("EEE MMM dd HH:mm:SS ZZZ yyyy"); 
DateTime dateTime = dateFmt.parseDateTime(dateString); 

Ausnahme: java.lang.IllegalArgumentException: ungültiges Format: "Sa 28. Januar 00.00.00 IST 2012" auf "IST 2012" malformed. Bitte hilf mir, das zu erreichen. Danke für jede Hilfe.

Antwort

0

ich weiß nicht, warum, aber es funktioniert, wenn ich SimpleDateFormat statt DateTimeFormatter verwenden.

Code:

public static void main(String[] args) throws ParseException { 
     String FORMAT = "EEE MMM dd HH:mm:SS zzz yyyy"; 
     String dateString = "Sat Jan 28 00:00:00 IST 2012"; 
     SimpleDateFormat dateFormat = new SimpleDateFormat(FORMAT); 
     Date date = dateFormat.parse(dateString); 
     System.out.println(new DateTime(date)); 
     DateTimeFormatter dateFmt = DateTimeFormat.forPattern(FORMAT); 
//  System.out.println(dateFmt.parseLocalDateTime(dateString)); 
//  System.out.println(dateFmt.parseDateTime(dateString)); 
     System.out.println(dateFmt.parseLocalTime(dateString)); 
    } 
2

IST Zeitzone von API nicht erkannt wird, kann es nur ein von der Zeitzone von getAvailableIds()

+0

wenn gemeint Sie Indian Standard Time dann aufrufen kann 'public static String [] getAvailableIDs (int rawOffset)' 'mit 5.5' und sehen, was es gibt, sollte es etwas sein wie' Kolkatta/Indien 'nicht sicher, schau es dir an –

+0

Hey, IST ist da, ich habe gerade versucht, sie alle zu drucken. 'for (Zeichenfolge: TimeZone.getAvailableIDs()) { \t \t \t System.out.println (Zeichenfolge); \t \t} ' – Ahamed

+0

dann ersetzen Sie einfach' ZZZ' zu 'zzz', wie Matt vorgeschlagen –

1

Verwenden zzz (klein geschrieben), nicht ZZZ (Großbuchstaben) erkennen. Von the API docs:

z time zone    text  Pacific Standard Time; PST 
Z time zone offset/id zone  -0800; -08:00; America/Los_Angeles 
Verwandte Themen