Почему Python устанавливает часовой пояс по умолчанию на -1? - PullRequest
0 голосов
/ 15 октября 2010

Я использую Python для отслеживания версии между локальным SQLite и удаленной веб-страницей. Полезно сравнить их по последней измененной информации и размеру файла из ответа HTTP. Я нашел что-то интересное во время разработки.

def time_match(web,sql):
  print web,sql
  t1 = time.strptime(web,"%a, %d %b %Y %H:%M:%S %Z")
  t2 = time.strptime(sql,"%Y-%m-%d %H:%M:%S")
  print t1,t2
  if t1==t2:
    print "same time"
  else:
    print "different time"
  return t1==t2

В приведенном выше коде я попытался декодировать время из Интернета и SQLite во внутреннее время и сравнить их. Давайте посмотрим на экран печати следующим образом:

Wed, 13 Oct 2010 01:13:26 GMT 2010-10-13 01:13:26
(2010, 10, 13, 1, 13, 26, 2, 286, 0) (2010, 10, 13, 1, 13, 26, 2, 286, -1)
different time

Результат показывает мне, что GMT правильно декодируется, в то время как дата-время по умолчанию для Python выглядит как -1. Мой системный часовой пояс на самом деле +8, откуда берется -1? SQLite?

1 Ответ

1 голос
/ 15 октября 2010

-1 в последней позиции в объекте time.struct_time не означает, что вы находитесь в 'UTC-01: 00'.Он представляет неопределенный атрибут is_dst (поскольку формат YYYY-MM-DD HH:MM:SS не содержит никакой информации о текущем часовом поясе или режиме летнего времени).

time.strptime('2010-10-15 11:01:02', '%Y-%m-%d %H:%M:%S')
# returns the following on a computer with Central European Sommer Time (CEST, +02:00):
time.struct_time(tm_year=2010, tm_mon=10, tm_mday=15, tm_hour=11, tm_min=1, tm_sec=2, tm_wday=4, tm_yday=288, tm_isdst=-1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...