2015-05-04 3 views
1

Мне нужно создать код, который может сообщить мне текущее время в любом городе (как переменную) и распечатать смещение utc между этим временем и utc. У меня уже есть следующий код, который дает текущее время и смещение от часового пояса, но этот часовой пояс не всегда utc. Примечание: названия городов хранятся в текстовом файле, и пользователь должен иметь возможность добавлять и удалять любой город. Я использую tkinter для gui.Разница Python между часовыми поясами

from datetime import datetime, timedelta 
from pytz import timezone 
import pytz 

def tz(): 
    utc = pytz.utc 
    amsterdam = timezone('Europe/Amsterdam') 
    fmt = '%Y-%m-%d %H:%M:%S %Z%z' 
    loc_dt = utc.localize(datetime.today()) 
    tz = loc_dt.astimezone(amsterdam) 
    print(tz.strftime(fmt)) 

содержимое файла следующим образом:

Amsterdam 
Brasilia 
Los Angeles 
Abu Dhabi 
Tokyo 
Singapore 

Может кто-то пожалуйста, помогите мне с легким кодом, чтобы сделать это? Спасибо заранее

+0

Вы говорите, что названия городов хранятся в текстовом файле. Этот файл также содержит смещение UTC для каждого города, или вы ожидаете, что это сработаете сами? –

+0

http://stackoverflow.com/a/12692910/4007642 –

+0

Ожидается, что мы сами это рассмотрим, файл содержит названия городов – FpRoT

ответ

1

Вы используете pytz уже, так что я бы на:

from datetime import datetime 
from pytz import timezone, all_timezones 

def to_timezone(dt, tz): 
    assert dt.tzinfo is not None 
    assert tz in all_timezones 
    return dt.astimezone(timezone(tz)) 

print to_timezone(datetime.now(timezone('UTC')), 'Europe/Amsterdam') 

Я установил его в UTC по умолчанию, но дело в том:

  • иметь не naive datetime
  • convert it
+0

Думаю, я могу работать с этим, спасибо, но еще одна вещь, он все еще печатает 'CEST + 0200', всегда ли это CEST или есть способ изменить его на UTC? – FpRoT

+0

зависит от того, что вы хотите, если вы используете эту функцию to_timezone, вы получите ее в запросе часового пояса, вы можете использовать ее снова, чтобы использовать ее в utc следующим образом: to_timezone (mycestdt, часовой пояс ('UTC')) –

Смежные вопросы