2016-07-09 5 views
0

ich diese Zeilen Java-Code haben, die ein Date konvertiert Objekt zu 10-stellige IntegerJAVA-Programm Ausgangsdifferenz zwischen Travis CI und laufen lokal auf einem Windows-Laptop

SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyyddMM"); 
Integer dateIntFormat = DATE_FORMAT.parse("20100405").getTime()/1000; 

Wenn ich laufe den obigen Code auf meinem Laptop vor Ort ich bekomme

dateIntFormat = 1272927600; 

Aber wenn der gleiche Code auf Travis läuft ich

dateIntFormat = 1272931200; 

Kann mir jemand erklären, warum und wie ich es auf meinem lokalen Rechner reparieren kann?

+1

Sieht aus wie Sie verschiedene Zeitzoneneinstellungen auf Ihrem Laptop haben und auf die CI-Server. Die Nummer, die du erhältst, enthält die Zeit, die in verschiedenen Zeitzonen unterschiedlich ist. Der beste Weg, um dies zu lösen, hängt davon ab, warum genau Sie diese ganze Zahl benötigen. – yole

+0

'yyyyddMM' ist ein nutzloses, nicht standardmäßiges, nicht sortierbares Datumsformat. Bist du sicher, *** das ist richtig? –

+0

@Yole Ich arbeite daran, JSON-Daten von einer REST-API zu bekommen. Die REST-API, die ich verwende, konvertiert das Datum in eine 10-stellige Ganzzahl und verwendet diese, um Daten von einem bestimmten Tag zu erhalten. Ich denke, die Zeitzonen könnten das Problem sein. –

Antwort

2

können Sie versuchen, mit Zeitzoneninformationen hinzufügen:

DATE_FORMAT.setTimeZone(TimeZone.getTimeZone("TIME_ZONE")); 

Sie können, wie dies in Java verfügbar Zeitzone ermitteln:

String[] ids = TimeZone.getAvailableIDs();