2012-08-13 3 views
0

J'ai une application web qui capture la date/heure via un script JS et calcule les secondes depuis l'époque au format UTC - ex 134250270000. Dans le backend nous avons un script Python qui récupère les données de la DB mais date/heure stockée en nombre de secondes depuis l'époque au format PST. Il y a toujours une différence de secondes entre UTC et PST si l'on compte à partir de l'époque.Python Convertir UTC en format PST/PDT

Y at-il une méthode par laquelle je peux convertir les secondes UTC depuis à l'époque à PST secondes depuis l'époque? Nous devons prendre note des changements de la lumière du jour dans le fuseau horaire PST également?

EDIT ::

I have the seconds since epoch in UTC format: 

1342502700 

I found that I get the sum in seconds between UTC and local standard time via: 

>>> time.timezone/3600 
8 

So If I add 1342502700 to time.timezone: 

>>> print 1342502700 + time.timezone 
1344153600 

aura-t-il me donner toujours temps/PST correctement PDT?

EDIT ::

Peut-être que cela est le correct:

>>> import time 
>>> offset = time.timezone if (time.daylight == 0) else time.altzone 
>>> offset/60/60 
7 

time.daylight sera non nulle si la lumière du jour est des économies actuellement en vigueur.

+2

Je peux me tromper, mais je suis sûr que « secondes depuis l'époque » est toujours mesurée selon UTC. Le nombre de secondes écoulées depuis l'époque est le même quel que soit l'endroit où vous vous trouvez sur la planète, mais la façon dont cela se traduit par une heure de la journée en fonction de votre fuseau horaire local est différente. – DaoWen

+0

Je ne suis pas sûr non plus - parce que 134250270000 en format UTC imprime une valeur et 134250270000 en formats PST imprime autre? Si oui s'il vous plaît laissez-moi savoir comment je convertis cette seconde depuis l'époque 134250270000 à PST un. – Prakash

+1

Cela me semble être le bon comportement. UTC est la même que GMT, donc l'impression des secondes-depuis-époque en format UTC devrait être quelques heures d'impression de la même valeur au format PST. – DaoWen

Répondre

0

Je pense que quelque part dans vos conversions, il y a un fuseau horaire implicite qui gâche les choses. Peu importe, je pense que ce que vous cherchez est time.altzone:

>>> from time import * 
>>> ctime(time()) 
'Mon Aug 13 16:54:02 2012' 
>>> ctime(time()+altzone) 
'Mon Aug 13 08:54:04 2012' 

Je suis à l'heure de Taipei en ce moment, donc mon heure locale (la première) est postérieure à UTC.

EDIT: I Missed la ligne dans la documentation qui dit seulement d'utiliser altzone si daylight est non nul. Apparemment, c'est un peu plus compliqué que ce que je pensais si vous viviez quelque part avec Daylight Savings Time. Reportez-vous à ce poste si vous devez faire face à ce que:

Python: get timezone based on DST for a timestamp

+0

Je viens de mettre à jour mes conclusions - merci pour le lien. S'il vous plaît laissez-moi savoir votre pensée sur le même – Prakash

+0

Votre mise à jour me semble bien! Il suffit de vérifier si 'daylight == 0' comme vous le faites devrait être tout ce dont vous avez besoin. – DaoWen