Как я могу принять эту строку даты:Разбираем дату в определенном часовом поясе с Python
«2015-01-01»
и, предполагая, что в определенном часовом поясе (например, «Американо Mountain "), преобразуйте его в метку времени POSIX?
Как так:
magic_parse_function("2015-01-01", pytz.timezone("US-Mountain")) -> 1420095600
Я провел некоторое время соскабливать документы и этот сайт, играя с осведомленными/не знает объекты даты и времени, и я надеясь для не-слишком- безумное решение. Ниже не работает, последние две строки вывода идентичны, и они должны быть 3600 секунд друг от друга:
import datetime
import time
import pytz
timestring = "2015-01-01"
pacific = pytz.timezone("US/Pacific")
mountain = pytz.timezone("US/Mountain")
(year, month, day) = timestring.split('-')
year = int(year)
month = int(month)
day = int(day)
unaware = datetime.datetime(year, month, day, 0, 0, 0, 0)
# aware_pacific = pacific.localize(unaware)
# aware_mountain = mountain.localize(unaware)
aware_mountain = unaware.replace(tzinfo=mountain)
aware_pacific = unaware.replace(tzinfo=pacific)
print time.mktime(aware_pacific.timetuple())
print time.mktime(aware_mountain.timetuple())
Предполагая, что полночь не обязательно правильная вещь. Не каждый часовой пояс * имеет * местную полночь на каждый день. Некоторые (например, Бразилия) пропускают с 23:59:59 до 01:00:00 в день весеннего перерыва DST. –
Кроме того, похоже, что у вас есть решение, используя 'localize'. Почему вы прокомментировали это и заменили? –
localize() void replace() не влияет на выход. Я думаю, проблема заключается в том, что timetuple() отбрасывает информацию о часовом поясе, поэтому я надеюсь, что кто-то скажет мне альтернативный (т. Е. Изящный) способ получить временную метку из известного объекта datetime. – shiftycow