Hintergrund Mithilfe der Bibliothek für geplante Aufgaben des Node-Schedule habe ich ein Skript geschrieben, um jeden Tag um 7 Uhr automatisch E-Mails zu versenden, wobei die E-Mail das aktuelle Datum enthält. Frage Die E-Mail wurde um 15 Uhr statt um 7 Uhr empfangen. Ich vermute, es lag an der Zeitzoneneinstellung. Problemanalyse und Lösungen Nach einer Untersuchung wurde festgestellt, dass die Node-Schedule-Bibliothek die Auswahl einer Zeitzone nicht unterstützt. Daher wird standardmäßig gemäß der globalen Standardzeit UTC gesendet. Die Zeit, die wir normalerweise eingeben, ist CST, die Shanghai-Zeitzone in China, die acht Stunden anders ist. let j = schedule.scheduleJob('Name',"0 7 * * *",'Asien/Shanghai', Funktion () { console.log("Aufgabe ausführen"); getAllDataAndSendMail(); }); Neues Problem Nach dem Ändern der Uhrzeit trat ein neues Problem auf. Die in der E-Mail angegebene Uhrzeit war die Zeit von gestern, nicht die von heute. Problemanalyse und Lösungen Nach einigem Nachdenken gibt es im Code zwei Stellen, an denen die Zeit abgerufen werden kann: Eine ist die von der Bibliothek für geplante Aufgaben übergebene Zeit zum Senden der E-Mail und die andere dient zum Abrufen der aktuellen Zeit im Skript lass heute = neues Datum() Da ich das heutige Protokoll ausgedruckt habe, überprüfen Sie das Protokoll docker logs -f [Container-ID] # heute: 2021-11-12T23:00:00.106Z Es wurde festgestellt, dass die um 7 Uhr gesendete E-Mail heute um 23:00 Uhr des Vortages empfangen wurde, was ebenfalls einen Unterschied von 8 Stunden darstellt. Verwenden Sie den folgenden Befehl, um den Docker-Container aufzurufen und die Uhrzeit zu überprüfen $ docker exec -it [Container-ID] sh # Nach dem Betreten des Containers wird die Vorderseite# # Geben Sie das Datum ein, um das Datum anzuzeigen. # Sa., 13. Nov. 05:05:31 UTC 2021 Es handelt sich tatsächlich um die globale Standardzeit UTC, was bedeutet, dass die Versandzeit der E-Mail zwar zurückgestellt wurde, die beim Ausführen des Codes erhaltene Zeit jedoch die aktuelle globale Standardzeit ist. docker cp /etc/localtime [Container-ID]:/etc/ Überprüfen Sie die Zeit im Container erneut wie oben beschrieben und stellen Sie fest, dass sie wieder auf CST geändert wurde. Es sollte kein Problem geben. Dies ist das Ende dieses Artikels über das Problem mit dem Zeitzonenfehler im Docker-Container. Weitere verwandte Inhalte zum Thema Zeitzonenfehler im Docker finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Bootstrap 3.0 Studiennotizen Rastersystemprinzip
>>: MySQL-Datenbank-Indexreihenfolge durch Sortierung – detaillierte Erklärung
Inhaltsverzeichnis Grundlegende Datenbankvorgänge...
Vorwort Nach der Bereitstellung des Servers besuc...
Das Hinzufügen von Indizes kann die Abfrageeffizi...
Idee: Einfach erst zufällig sortieren und dann gr...
1. Ursache Die Anforderung besteht darin, zwei Ze...
Das Schönste, was in einer Produktionsumgebung pa...
Wenn Sie möchten, dass die gesamte Benutzeroberfl...
Heute haben wir ein weiteres typisches Problem im...
In diesem Artikel wird der spezifische Code der E...
Erstellen eines Containers [root@server1 ~]# dock...
Problembeschreibung: Wenn die Anzahl der asynchro...
Wenn ein Projekt eine gewisse Komplexität erreich...
mysqldump-Tool-Sicherung Sichern Sie die gesamte ...
<iframe src="./ads_top_tian.html" all...
Überprüfen Sie, was in MySQL installiert ist grep...