Mam świadomość, że istnieje kilka pytań na ten temat. Ale mam problem z określonym wzorem daty. Oto przykład:Wyodrębnij strefę czasową ze stringa
20130401100000[-03:EST]
Mam troble z -03
ponieważ zgodnie z dokumentacją SimpleDateFormat
powinien mieć 4 cyfry. Najbliższy wzór to:
yyyyMMddHHmmss'['Z':'z']'
Ale z powodu 2 cyfr po prostu nie zadziała. Oto przykładowy kod używam do testów:
public static void main(String[] args) throws ParseException {
String input = "20130401100000[-03:EST]";
DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss'['Z':'z']'");
df.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(df.format(new Date()));
System.out.println(df.parse(input));
}
Kiedy wydrukuj new Date()
uzyskać to:
20130528155734[+0000:GMT]
Ale gdy próbuję podczas analizowania input
otrzymuję następujący wyjątek:
Exception in thread "main" java.text.ParseException: Unparseable date: "20130401100000[-03:EST]"
at java.text.DateFormat.parse(DateFormat.java:337)
at Teste.main(Teste.java:17)
Czy ktoś wie, jak mogę przeanalizować input
w Date
z poprawną TimeZone
?
podoba mi się rozwiązanie z 'replaceAll' wydaje elegancki. Dzięki :-) –