Простой Python. Современный стиль программирования (Любанович) - страница 173

Объект datetime также имеет метод isoformat():

>>>> some_day.isoformat()

>'2014-01-02T03:04:05.000006'

Буква T, которая находится в середине, разделяет дату и время.

Объект datetime имеет метод now(), с помощью которого вы можете получить текущие дату и время:

>>>> from datetime import datetime

>>>> now = datetime.now()

>>>> now

>datetime.datetime(2014, 2, 2, 23, 15, 34, 694988)

>14

>>>> now.month

>2

>>>> now.day

>2

>>>> now.hour

>23

>>>> now.minute

>15

>>>> now.second

>34

>>>> now.microsecond

>694988

Вы можете объединить объекты date и time в объект datetime с помощью метода combine():

>>>> from datetime import datetime, time, date

>>>> noon = time(12)

>>>> this_day = date.today()

>>>> noon_today = datetime.combine(this_day, noon)

>>>> noon_today

>datetime.datetime(2014, 2, 2, 12, 0)

Вы можете получить объекты date и time из объекта datetime с помощью методов date() и time():

>>>> noon_today.date()

>datetime.date(2014, 2, 2)

>>>> noon_today.time()

>datetime.time(12, 0)

Модуль time

В Python имеется модуль datetime, имеющий объект time, а также отдельный модуль time, что создает путаницу. Дальше — больше, в модуле time имеется функция с именем — что вы подумали? — time().

Одним из способов представления абсолютного времени является подсчет количества секунд, прошедших с некоторой стартовой точки. В Unix используется количество секунд, прошедших с полуночи 1 января 1970 года (примерно в это время появилась система Unix). Это значение часто называют epoch, и зачастую оно является простейшим способом обмениваться датой и временем между системами.

Функция time() модуля time возвращает текущее время как значение epoch:

>>>> import time

>>>> now = time.time()

>>>> now

>1391488263.664645

Если выполнить подсчеты, вы увидите, что прошло более миллиарда секунд после наступления нового, 1970 года. И куда ушло время?

Вы можете преобразовать значение epoch в строку с помощью функции ctime():

>>>> time.ctime(now)

>'Mon Feb··3 22:31:03 2014'

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

Значения epoch полезны для обмена датой и временем с разными системами вроде JavaScript. Однако иногда вам нужно получить именно значения дней, часов и т. д., объект time предоставляет их как объекты struct_time. Функция localtime() предоставляет время в вашем текущем часовом поясе, а функция gmtime() — в UTC:

>>>> time.localtime(now)

>time.struct_time(tm_year=2014, tm_mon=2, tm_mday=3, tm_hour=22, tm_min=31,

>tm_sec=3, tm_wday=0, tm_yday=34, tm_isdst=0)

>>>> time.gmtime(now)

>time.struct_time(tm_year=2014, tm_mon=2, tm_mday=4, tm_hour=4, tm_min=31,