Auf der Vorderseite in Millisekunden umrechnen Beim Senden von Zeitinformationen an die Backend-API Sie müssen die Sommerzeit berücksichtigen.
Wenn Sie es mit einer Java-Methode konvertieren, wird es die Sommerzeit behandeln, Dies liegt daran, dass Javascript nicht damit umgeht.
In diesem Artikel wird beschrieben, wie Java mit der Sommerzeit umgeht Ich werde Ihnen die detaillierten Spezifikationen der Konvertierung mitteilen.
Der Geburtstag einer im Sommer geborenen Person Ein Ereignis, das an einem freien Tag angezeigt wird, ist aufgetreten.
1 Stunde bei der Registrierung / Referenz im Sommer Es ist notwendig, Millisekunden zu addieren und zu subtrahieren.
Die Einführungsphase für die Sommerzeit in Japan ist wie folgt.
Jahr | Startzeit | Endzeit |
---|---|---|
1948 (Showa 23) | 2. Mai(Tag)2 Uhr morgens | 9月11Tag(Boden)2 Uhr morgens |
1949 (Showa 24) | 3. April(Tag)2 Uhr morgens | 9月10Tag(Boden)2 Uhr morgens |
1950 (1950) | 7. Mai(Tag)2 Uhr morgens | 9月9Tag(Boden)2 Uhr morgens |
1951 (Showa 26) | 6. Mai(Tag)2 Uhr morgens | 9月8Tag(Boden)2 Uhr morgens |
Um am Montag, den 2. Mai, um 2:00 Uhr in die Sommerzeit einzutreten Die Zeit wird um eine Stunde vorverlegt und die Millisekunde entspricht 3:00 Uhr.
** Verifizierungsquelle **
SummerTime.java
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SummerTime {
public static void main(String[] args) throws ParseException {
convertToMilliseconds("1948-05-02 02:00:00");
convertToMilliseconds("1948-05-02 03:00:00");
}
private static void convertToMilliseconds(String dateStr) throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = formatter.parse(dateStr);
System.out.println(dateStr + " -> " + date.getTime());
}
}
** Ausgabeergebnis **
1948-05-02 02:00:00 -> -683794800000
1948-05-02 03:00:00 -> -683794800000
Die Umstellung um 2:00 Uhr ist wie folgt.
1948-05-02 02:00:00 -> -683794800000
1948-05-02 02:00:01 -> -683794799000
1948-05-02 02:00:02 -> -683794798000
・
・
・
1948-05-02 02:59:58 -> -683791202000
1948-05-02 02:59:59 -> -683791201000
1948-05-02 03:00:00 -> -683794800000
Von 2: 59: 59: 999 bis 3:00 Uhr Ich verstehe die zu korrigierenden Spezifikationen. Im Sommer gibt es jedoch keine 2:00 Uhr. Es wird nicht erwartet, dass die Millisekundenumwandlung zwischen 2 und 3 Uhr verwendet wird.
Um am Montag, den 11. September, um 1:00 Uhr morgens aus der Sommerzeit herauszukommen Die Zeit muss um eine Stunde wiederhergestellt werden.
1948-09-11 00:59:59 -> -672397201000
1948-09-11 01:00:00 -> -672393600000
Die Differenz beträgt 1 Sekunde in der Datums- und Uhrzeitnotation. In Millisekunden wird es auf 3601000 Millisekunden korrigiert.
Wechseln wir nun von Millisekunde zur Datums- und Uhrzeitnotation zurück.
** Verifizierungsquelle **
SummerTime.java
private static void convertToTimeFormat(Long milliSeconds) throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = formatter.format(milliSeconds);
System.out.println(milliSeconds + " -> " + dateStr);
}
** Ausgabeergebnis **
-683794801000 -> 1948-05-02 01:59:59
-683794800000 -> 1948-05-02 03:00:00
-683794799000 -> 1948-05-02 03:00:01
-672397201000 -> 1948-09-11 00:59:59
-672397200000 -> 1948-09-11 01:00:00
-672397199000 -> 1948-09-11 01:00:01
・
・
・
-672393601000 -> 1948-09-11 01:59:59
-672393600000 -> 1948-09-11 01:00:00
-672393599000 -> 1948-09-11 01:00:01
Die Spezifikationen sind so, dass die 1-Uhr-Stufe zweimal kommt.
Korrigieren Sie beim Konvertieren an der Vorderseite die Millisekunde des entsprechenden Zeitraums Problem beim Senden von Zeitinformationen an die API behoben.
dateUtil.ts
/**
*Holen Sie sich Zeit unter Berücksichtigung der Sommerzeit (konvertiert, wenn von API nach vorne angezeigt)
*/
export function getSummerTimeDate(birthDate){
let birth = Number(birthDate)
if ((birth >= -683794800000 && birth <= -672393600001)
|| (birth >= -654764400000 && birth <= -640944000001)
|| (birth >= -620290800000 && birth <= -609494400001)
|| (birth >= -588841200000 && birth <= -578044800001)) {
birth += 3600000
}
return birth
}
/**
*Ersatzzeit unter Berücksichtigung der Sommerzeit (umgerechnet bei der Registrierung von vorne auf API)
*/
export function setSummerTimeDate(birthDate){
let birth = Number(birthDate)
if ((birth >= -683791200000 && birth <= -672390000001)
|| (birth >= -654760800000 && birth <= -640940400001)
|| (birth >= -620287200000 && birth <= -609490800001)
|| (birth >= -588837600000 && birth <= -578041200001)) {
birth -= 3600000
}
return birth
}
Ich denke, es ist besser zu überlegen, ob die Zeit, zu der die Sommerzeit eingeführt wird, in der Phase der Prüfung der Spezifikationen behandelt werden soll. Ich denke auch, wir sollten separat überlegen, wie dies vermieden werden kann, z. B. die Verwendung von UTC für die Zeitzone.
Japanische Sommerzeit und Java Über die reale Sommerzeit
Recommended Posts