2009-04-03 12 views
3

J'ai des données correspondant au décalage UTC et à l'heure UTC. Compte tenu de cela, est-il possible en Python d'obtenir le fuseau horaire local de l'utilisateur (principalement pour savoir s'il est DST, etc. en utilisant probablement pytz), similaire à la fonction dans PHP timezone_name_from_abbr?Est-il possible d'obtenir un fuseau horaire en Python avec un horodatage UTC et un décalage UTC?

Par exemple:

Si mon temps d'époque est 1238720309, je peux obtenir le temps UTC comme:

>>> d = datetime.utcfromtimestamp(1238720309) 
>>> print d + dt.timedelta(0,-28800) #offset for pacific I think 
2009-04-02 17:04:41.712143 

Ceci est correct, sauf qu'il est PDT en ce moment, il devrait donc être:

2009-04-02 18:04:41.712413 

J'ai besoin d'obtenir le fuseau horaire à utiliser dans pytz pour savoir si c'est l'heure d'été, je pense?

+0

related: [pytz: renvoie le nom Olson Timezone uniquement à partir d'un décalage GMT] (http://stackoverflow.com/a/30335175/4279) – jfs

Répondre

5

Comme, en général, il existe plus d'un fuseau horaire possible pour un décalage de fuseau horaire donné, la réponse générale est "Non, pas sans plus d'informations". Le plus d'informations est généralement l'emplacement auquel l'heure s'applique - quel pays, ou état, ou ville.

+0

Les limites de fuseau horaire sont plus ou moins aléatoires. Techniquement, ils sont comté par comté aux États-Unis et n'ont pas à suivre les frontières des États. En outre, DST varie selon les paramètres régionaux - en particulier en Arizona et en Indiana, d'autres États peuvent également avoir des règles complexes. –

1

No. Fuseau horaire sont trop compliquées et il y a trop de X qui sont heures de UTC.

http://en.wikipedia.org/wiki/List_of_time_zones

Par exemple, -5 UTC pourrait être le Canada, New York, Cuba, la Jamaïque, l'Equateur, etc.

Les zones équateur n'utilisent pas probablement DST depuis leur jour est à peu près 12 heures de l'année. Les sud-américains, s'ils utilisent une certaine forme d'heure d'été sont probablement sur le calendrier opposé des nord-américains parce que leurs horaires d'été/hiver (c'est-à-dire jours courts/jours longs) sont également opposés.