Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 226

разные страны переходят на летнее время и обратно в разные дни года. Фактически

страны южного полушария переводят свои часы вперед, когда страны северного

полушария переводят их назад, и наоборот (если вы немного задумаетесь, то пой-

мете, почему так происходит).

Стандартная библиотека Python имеет множество модулей для работы с датой

и временем: datetime, time, calendar, dateutil и др. Их функции немного пересека-

ются друг с другом, и это может создать путаницу.

Модуль datetime

Начнем с рассмотрения стандартного модуля datetime. В нем определены четыре

основных объекта, каждый из которых содержит множество методов:

 date для годов, месяцев и дней;

 time для часов, минут, секунд и долей секунды;

Календари и часы

293

 datetime для даты и времени одновременно;

 timedelta для интервалов даты и/или времени.

Вы можете создать объект date, указав год, месяц и день. Эти значения будут

доступны как атрибуты:

>>> from datetime import date

>>> halloween = date(2014, 10, 31)

>>> halloween

datetime.date(2014, 10, 31)

>>> halloween.day

31

>>> halloween.month

10

>>> halloween.year

2014

Вы можете вывести на экран содержимое объекта date с помощью его метода

isoformat():

>>> halloween.isoformat()

'2014-10-31'

iso в данном контексте ссылается на ISO 8601 — международный стандарт для

представления даты и времени. В этом формате мы записываем дату, начиная с само-

го общего элемента (год) и заканчивая самым точным (день). С его помощью можно

также корректно отсортировать даты: сначала по году, затем по месяцу, затем по дню.

Я обычно выбираю этот формат для представления данных в программах и для имен

файлов, которые сохраняют данные по дате. В следующем разделе будут показаны

более сложные методы strptime() и strftime() для анализа и форматирования дат.

В этом примере метод today() используется для генерации сегодняшней даты:

>>> from datetime import date

>>> now = date.today()

>>> now

datetime.date(2014, 2, 2)

В следующем примере объект timedelta используется для того, чтобы добавить

к объекту date некоторый временной интервал:

>>> from datetime import timedelta

>>> one_day = timedelta(days=1)

>>> tomorrow = now + one_day

>>> tomorrow