2017-09-10 3 views

Répondre

0

Sur de nombreux systèmes Unix (y compris les * BSD, Linux, Solaris et Darwin), il est la base de données plus pratique d'utiliser le zoneinfo du système (tzfile (5)) pour spécifier les règles de fuseau horaire. Pour ce faire, définissez la variable de l'environnement TZ sur le chemin du fichier de données de fuseau horaire requis, par rapport à racine de la base de données de fuseaux horaires zoneinfo ', généralement située dans/usr/share/zoneinfo. Par exemple, «États-Unis/Europe de l'Est», «Australie/Melbourne», «Égypte» ou «Europe/Amsterdam».

>>> os.environ['TZ'] = 'US/Eastern' 
>>> time.tzset() 
>>> time.tzname 
('EST', 'EDT') 
>>> os.environ['TZ'] = 'Egypt' 
>>> time.tzset() 
>>> time.tzname 
('EET', 'EEST') 

Il fonctionne très bien avec les chaînes de fuseau horaire valide trop

+0

Malheureusement, il ne s'agit pas de mon système. Ce sont les valeurs que je reçois dans les données JSON à partir de scraper. J'ai deux champs séparés - datetime et tz dans le format I défini supérieur. Et je dois d'une manière ou d'une autre appliquer tz à datetime. Je sais que 'America/Chicago' == 'CDT'. Si j'ai la chaîne 'America/Chicago' - je peux facilement le faire. Mais j'ai seulement la chaîne 'CDT' - et je ne peux pas trouver comment créer tz à partir de ça. – uCodista

+0

Vous pouvez essayer l'objet creatr datetime à partir de la chaîne en utilisant strptime –

+0

J'ai 2 valeurs; 'tstamp = 15051384000' ' tzname = « CDT'' ' import datetime comme dt' 'my_time = dt.datetime.fromtimestamp (tstamp)' Comment appliquer tz à "my_time" avec donné " tz_name "? – uCodista