2016-12-07 4 views
0

Ich habe ein Formular, das ein Date-Objekt von Javascript an Python-Backend sendet. Das Datum wird in GMT +0530 eingegeben, aber in Python wird es in GMT +0000 geparst. Sendezeit von Javascript zu Python Backend

Nachfolgend sind die Javascript-Protokolle:

> $scope.my_date.getTime() 
< 1480617000000 
> $scope.my_date 
< Fri Dec 02 2016 00:00:00 GMT+0530 (IST) 

So wird dieses Datum in Thur Dec 01 2016 18:30:00 GMT+0000 analysiert wird.

Wie kann ich die Zeitzone des Landes senden, in dem das Formular ausgefüllt wurde, so dass ich diese Zeitzone verwenden kann, um die Zeit von Dec 01 in Dec 02 zu konvertieren?

kann ich den Offset in Stunden senden (zum Python) nach folgenden Methode:

> $scope.my_date.getTimezoneOffset()/60 
< -5.5 

Aber pytz Zeitzone des versteht Python in "Asia/Kolkata" Format, nicht das -5.5 Format.

Ich kann das Datum manuell mit -5.5 einstellen, aber ich bin auf der Suche nach einer sauberen Lösung.

Antwort

0

Ich habe die folgende Methode verwendet, um das obige Problem zu umgehen.

Ich habe die Zeit in der JS selbst geändert, bevor Sie es an den Server senden.

($scope.my_date.getTime()/1000) - ($scope.my_date.getTimezoneOffset()*60) 
0

Senden mit Math.floor($scope.my_date.getTime()/1000) und auf der Python-Seite nur den Unix-Zeitstempel lesen.

zu erklären: getTime() gibt einen mit Millisekunden Unix-Zeitstempel, oder die Anzahl der miliseconds seit:

1. Januar 1970 00.00.00 UTC

Ich habe bolded das letzte bisschen, weil es wichtig ist. Es spielt keine Rolle, in welcher Zeitzone Sie sind, wenn Sie einen Unix-Zeitstempel erstellen, es ist immer UTC. Jede Programmiersprache und jedes Tool, das sich mit Unix-Zeitstempeln richtig beschäftigt, liest den Zeitstempel als UTC ein und konvertiert intern in die lokale/korrekte Zeitzone.

So kompliziere Dinge nicht mit dem Versuch, Datenstrings zu analysieren - verwenden Sie einfach den Zeitstempel - es ist universell.

Der einzige Fehler ist die Konvertierung (/1000 mit einem Math.floor), um die Millisekunden zu entfernen.

+0

Danke, aber Sie haben die Frage nicht verstanden. Ich verstehe, dass die Zeit in UTC ist. Ich möchte die Zeitzone Informationen zusammen mit Unix-Zeitstempel an den Server übergeben. –

+0

Oh, ich lese die Frage noch einmal - mein Fehler. – samlev