Molto vago ... dipende che pattern hai usato, se hai "stampato" direttamente il Date risultante dal parsing, ecc...
codice:import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Prova { public static void main(String[] args) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); Date d = sdf.parse("2017-09-18T23:29:59.000Z"); System.out.println(d); } }
Questo da me stampa Tue Sep 19 01:29:59 CEST 2017 ma semplicemente perché il toString() di Date fornisce una forma fissa e nel timezone locale (il CEST sul mio PC)
Ma l'istante nel tempo è il long dei millisecondi 1505777399000 che se verifichi su epochconverter.com vedi che in GMT è proprio le 11:29:59 PM del giorno 18.
Quindi la questione è semplice: COME hai trattato tu tutto questo?