Pozostałe odpowiedzi są przestarzałe od wersji Java 8.
ISO 8601
Twój format string dzieje zgodne ze standardem ISO 8601. Ten standard definiuje sensowne formaty reprezentujące różne wartości daty i czasu jako tekst.
java.time
Stare java.util.Date
/.Calendar
i java.text.SimpleDateFormat
zajęcia zostały wyparte przez ramy java.time wbudowany w Java 8 i późniejszych. Zobacz Tutorial. Unikaj starych klas, ponieważ okazały się one źle zaprojektowane, mylące i kłopotliwe.
Część złego projektu w starych klasach cię ugryzła, gdzie metoda toString
stosuje bieżącą domyślną strefę czasową JVM podczas generowania tekstowej reprezentacji wartości daty i czasu, która faktycznie jest w UTC (GMT); zamyślony, ale mylący.
Klasy java.time używają domyślnie formatów ISO 8601 podczas analizowania/generowania tekstowych reprezentacji wartości daty i godziny. Więc nie trzeba określać wzorca parsowania.
An Instant
to moment na osi czasu w UTC.
Instant instant = Instant.parse("2013-09-29T18:46:19Z");
można zastosować time zone ile potrzeba do wytworzenia ZonedDateTime
obiekt.
ZoneId zoneId = ZoneId.of("America/Montreal");
ZonedDateTime zdt = instant.atZone(zoneId);
tak, że to, co oznacza 'Z'. Z- Strefa czasowa – Woody
Z = czas Zulu => GMT + 0, najwyraźniej nie służyłeś swojemu krajowi;) – MushyPeas