Biorąc pod uwagę twój wkład 2014-09-17T12:00:44.0000000Z
, nie jest wystarczająca, aby uciec tylko nas T
. Musisz także obsługiwać ciąg dalszy Z
. Ale należy pamiętać, że ten Z
NIE jest dosłowny, ale ma znaczenie przesunięcia strefy czasowej UTC+00:00
zgodnie z ISO-8601-standard
. Tak więc uniknięcie Z
NIE jest poprawne.
SimpleDateFormat
obsługuje ten specjalny znak Z
według symbolu wzoru X
. Więc ostateczne rozwiązanie wygląda następująco:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSX");
Date d = sdf.parse("2014-09-17T12:00:44.0000000Z");
System.out.println(d); // output: Wed Sep 17 14:00:44 CEST 2014
Należy zauważyć, że inny zegar jest dla strefy czasowej CEST
(toString()
używa strefy czasowej systemu), a wynik jest równoważna UTC-time 12:00:44
. Ponadto musiałem wstawić siedem symboli S, aby poprawnie przetworzyć dane wejściowe, które udają, że mają dokładność do 100ns
(chociaż Java 8 może przetwarzać tylko milisekundy).
Jak analizować? –
current_date = formatter.parse (data) – mbezunartea
Dodaj obiekt formatowania również tutaj –