как найти время в конкретном часовом поясе отовсюду

Я должен знать текущее время в CDT, когда мой скрипт Python запущен. Однако этот скрипт будет запущен в нескольких различных часовых поясах, таким образом, простое смещение не будет работать. Мне только нужно решение для Linux, но кросс-платформенное решение было бы идеально.

5
задан hoju 28 January 2010 в 05:19
поделиться

3 ответа

Вы можете использовать Time.gmime () , чтобы получить время GMT (UTC) с любого компьютера, независимо от часового пояса, то вы можете применить ваше смещение.

4
ответ дан 18 December 2019 в 13:14
поделиться

Pytz или DateutiL.tz - это хитрость здесь. В основном это что-то вроде этого:

>>> from pytz import timezone
>>> mytz = timezone('Europe/Paris')
>>> yourtz = timezone('US/Eastern')

>>> from datetime import datetime
>>> now = datetime.now(mytz)
>>> alsonow = now.astimezone(yourtz)

Трудность фактически заключается в том, чтобы выяснить, какой часовой пояс вы находитесь. DateutiL.tz лучше при этом.

>>> from dateutil.tz import tzlocal, gettz
>>> mytz = tzlocal()
>>> yourtz = gettz('US/Eastern')

Если вы хотите, чтобы все нитущие смягчающие детали о том, почему времязоны злые, они здесь:

http://regebro.wordpress.com/2007/12/18/python-andtime-time-zones-fighting- Heake Beast /

http://regebro.wordpress.com/2008/05/10/python-andtime-zones-part-2-the-beast-ruturns/

http: // regebro. WordPress.com/2008/05/13/thanks-for-the-testing-hels-help-conclusions/

9
ответ дан 18 December 2019 в 13:14
поделиться

Простое смещение будет работать, вам просто нужно компенсировать от UTC.

Использование DateTime Вы можете получить текущее время UTC (GMT) и использовать объекты DateTime:

DateTime.dateTime.utcnow () - дает время на UTC

dateTime.dateTime. . wnow () - дает время на локальном компьютере

, чтобы получить время CT из любой системы, необходимой вам, чтобы узнать смещение времени CT из UTC. Затем учитывать дневной сберегательный код времени функцию, чтобы получить текущее смещение.

>>> import datetime
>>> utc = datetime.datetime.utcnow()
>>> current_ct_offset = get_current_ct_offset()
>>> ct_datetime = utc + datetime.timedelta(hours=current_ct_offset)

Я мог бы с видом на что-то упустить, но если ваш только обеспокоен одним часовым появлением, и вы не выполняете обращение с именем TZ, это довольно быстро.

1
ответ дан 18 December 2019 в 13:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: