Некоторое время назад мне пришлось написать небольшой скрипт на python, который, среди прочего, анализировал строку даты в формате ISO8601 и сравнивал ее с текущей датой-временем.
Поскольку я не пишу код на Python, я искал решение. К моему большому разочарованию, все предложенные мной решения предлагали использовать сторонние библиотеки для выполнения этой работы. По сути, я сделал это (упрощенно для краткости):
import iso8601
import pytz
utc = pytz.UTC()
event_date = iso8601.parse_date('2002-10-02T15:00:00.05Z')
now = utc.localize(datetime.utcnow())
# Only now I was able to compare the dates
if event_date - timedelta(hours=3) < now:
<do something>
Меня не устраивает тот факт, что мне пришлось импортировать две сторонние библиотеки для такой распространенной задачи.
Как выполнить вышеизложенное, используя только то, что доступно только в стандартной библиотеке Python, и избежать таких ошибок, как:
- не может сравнивать даты и времена со смещением и наивом
- не может сравнивать tz-naive и tz-осведомленные объекты, подобные дате и времени