In den letzten zwei Tagen haben wir eine einzelne Sign-On-Integration in ein bekanntes Einkartenunternehmen durchgeführt (unser Produkt ist in Java geschrieben, und das Programm der anderen Partei ist in .NET geschrieben). Das heißt, die Anzahl der Sekunden, die die aktuelle Zeit im Verhältnis zu 00:00:00 n. Chr. 1970-1-1 liegt. Nach der Dokumentation, die sie angegeben haben, habe ich den Java -Teil abgeschlossen.
Die Codekopie lautet wie folgt:
private String createTimestamp () // Zeitstempel
{
return system.currentTimemillis () / 1000 + "";
}
Verwenden Sie die Methode des Systems. Aber ein Unfall geschah.
Die von .NET generierte Zeit ist die aktuelle Zeit der aktuellen Zeitzone, während die CurrentTimillis () -Methode von Java die Zeit von GMT ist. Die Zeitzone, in der sich China befindet, ist Zone +8, daher beträgt der Zeitunterschied 8 Stunden!
Wenn Kinderschuhe also auf die Zeit stoßen, die zwischen .NET und Java inkonsistent ist, berücksichtigen Sie die Zeitzone öfter, und vielleicht finden Sie eine Lösung :)
Natürlich werde ich eine Lösung geben:
Methode 1: Parameter hinzufügen, wenn JVM ausgeführt wird, geben Sie die Zeitzone -d -Benutzer an. TimeZone = GMT+08
Methode 2: Stellen Sie die Zeitzone direkt im Programm ein. System.setProperty ("user.timezone", "gmt +08");
Methode 3: Fügen Sie einfach 28800 hinzu (8 Stunden*60 min*60 Sekunden = 28800)