Главная страница

справочник по Python. мм isbn 9785932861578 9 785932 861578


Скачать 4.21 Mb.
Названиемм isbn 9785932861578 9 785932 861578
Анкорсправочник по Python
Дата08.05.2022
Размер4.21 Mb.
Формат файлаpdf
Имя файлаBizli_Python-Podrobnyy-spravochnik.440222.pdf
ТипСправочник
#518195
страница33 из 82
1   ...   29   30   31   32   33   34   35   36   ...   82
d.ctime()
Возвращает строковое представление даты в том же формате, который обычно используется функцией time.ctime().
d.isocalendar()
Возвращает дату в виде кортежа (iso_year, iso_week, iso_weekday), где поле
iso_week
содержит число в диапазоне от 1 до 53, а поле iso_weekday – число в диапазоне от 1 (понедельник) до 7 (воскресенье). Значение 1 в поле iso_
week
соответствует первой неделе года, включающей четверг. Диапазон зна- зна- зна- чений компонентов кортежа определяется стандартом ISO 8601.
d.isoformat()
Возвращает строку вида ‘YYYY-MM-DD’, отформатированную в соответствии с требованиями стандарта ISO 8601, представляющую дату.
d.isoweekday()
Возвращает день недели в диапазоне от 1 (понедельник) до 7 (воскресенье).

Модуль datetime
423
d.replace([year [, month [, day ]]])
Возвращает новый объект класса date, в котором один или более атрибу- тов получают новые значения. Например, вызов d.replace(month=4) вернет новый объект date, в котором атрибут month получит новое значение 4.
d.strftime(format)
Возвращает строковое представление даты, отформатированное в соот- ветствии с правилами, которые применяются при работе с функцией time.
strftime()
. Эта функция может работать только с датами позднее 1900 года.
Кроме того, спецификаторы формата для компонентов, отсутствующих в объектах типа date (таких как часы, минуты и так далее), не должны ис- пользоваться.
d.timetuple()
Возвращает объект time.struct_time, пригодный для использования в вы- зовах функций из модуля time. Значения, имеющие отношение к времени суток (часы, минуты, секунды), будут установлены в 0.
d.toordinal()
Возвращает порядковый номер даты d. Дата 1 января 1 года имеет поряд- ковый номер 1.
d.weekday()
Возвращает день недели в диапазоне от 0 (понедельник) до 6 (воскресенье).
Объекты класса time
Объекты класса time используются для представления времени в часах, минутах, секундах и микросекундах. Создание объектов производится с помощью следующего конструктора класса:
time(hour [, minute [, second [, microsecond [, tzinfo]]]])
Создает объект класса time, представляющий время суток, где для значе- ний аргументов должны соблюдаться следующие условия: 0 <= hour < 24,
0 <=
minute < 60
, 0 <= second < 60 и 0 <= microsecond < 1000000. Аргумент
tzinfo
является экземпляром класса tzinfo, который описывается ниже, в этом же разделе, и используется для передачи информации о часовом поясе. Возвращаемый объект time обладает атрибутами hour, minute, second, microsecond и tzinfo, в которых сохраняются значения соответствующих ар- гументов.
Следующие атрибуты класса time описывают диапазоны допустимых зна- чений и разрешающую способность экземпляров класса time:
time.min
Атрибут класса, представляющий минимально допустимое время суток
(datetime.time(0,0)).
time.max
Атрибут класса, представляющий максимально допустимое время суток
(datetime.time(23,59,59, 999999)).

424
Глава 19. Службы операционной системы
time.resolution
Наименьшая различимая разница между двумя неравными объектами time
(datetime.timedelta(0,0,1)).
Экземпляр t класса time, помимо атрибутов t.hour, t.minute, t.second,
t.microsecond и t.tzinfo, обладает также следующими методами:
t.dst()
Возвращает значение t.tzinfo.dst(None). Возвращаемое значение является объектом класса timedelta. Если информация о часовом поясе отсутствует, возвращает None.
t.isoformat()
Возвращает строковое представление времени вида ‘HH:MM:SS.mmmmmm’. Если число микросекунд равно нулю, часть строки ‘.mmmmmm’ опускается. Если в экземпляре присутствует информация о часовом поясе, к представле- нию времени может быть добавлено смещение часового пояса (например,
‘HH:MM:SS.mmmmmm+HH:MM’
).
t.replace([hour [, minute [, second [, microsecond [, tzinfo ]]]]])
Возвращает новый объект класса time, в котором один или более атрибу- тов получают новые значения. Например, вызов t.replace(second=30) вернет новый объект time, в котором атрибут seconds получит новое значение 30.
Аргументы имеют тот же смысл, что и в функции time(), описанной выше.
t.strftime(format)
Возвращает строковое представление времени, отформатированное в соот- ветствии с правилами, которые применяются при работе с функцией time.
strftime()
из модуля time. Так как объекты time не содержат информацию о дате, то допускается использовать только спецификаторы формата, име- ющие отношение к времени суток.
t.tzname()
Возвращает значение t.tzinfo.tzname(). Если информация о часовом поясе отсутствует, возвращает None.
t.utcoffset()
Возвращает значение t.tzinfo.utcoffset(None). Возвращаемое значение яв- ляется объектом класса timedelta. Если информация о часовом поясе отсут- информация о часовом поясе отсут- информация о часовом поясе отсут- о часовом поясе отсут- о часовом поясе отсут- часовом поясе отсут- часовом поясе отсут- поясе отсут- поясе отсут- отсут- отсут- ствует, возвращает None.
Объекты класса datetime
Объекты класса datetime используются для представления даты и времени.
Существует множество способов создания экземпляров класса datetime:
datetime(year,
month, day [, hour [, minute [, second [, microsecond [, tzinfo]]]]])
Создает объект класса datetime, обладающий всеми возможностями объек- тов классов date и time. Аргументы имеют тот же смысл, что и в функциях date()
и time().

Модуль datetime
425
datetime.combine(date,time)
Ме тод класса, который создает объект datetime, объединяя содержимое объекта date, представленного аргументом date, и объекта time, представ- ленного аргументом time.
datetime.fromordinal(ordinal)
Метод класса, который создает объект datetime, соответствующий дате, отстоящей на ordinal дней от минимально допустимой даты (целое число дней, прошедших с даты datetime.min). Все атрибуты, определяющие время суток, устанавливаются в значение 0, а атрибут tzinfo – в значение None.
datetime.fromtimestamp(timestamp [, tz])
Метод класса, который создает объект datetime, соответствующий отметке времени timestamp, возвращаемой функцией time.time(). В необязательном аргументе tz, который является экземпляром класса tzinfo, передается ин- формация о часовом поясе.
datetime.now([tz])
Метод класса, который создает объект datetime, соответствующий текущей локальной дате и времени. В необязательном аргументе tz, который явля- ется экземпляром класса tzinfo, передается информация о часовом поясе.
datetime.strptime(datestring, format)
Метод класса, который создает объект datetime из строки datestring, руко- водствуясь форматом в аргументе format. Анализ строки выполняется с по- мощью функции strptime() из модуля time.
datetime.utcfromtimestamp(timestamp)
Метод класса, который создает объект datetime, соответствующий отметке времени timestamp, обычно возвращаемой функцией time.gmtime().
datetime.utcnow()
Метод класса, который создает объект datetime, соответствующий текущей дате и времени по Гринвичу.
Следующие атрибуты класса описывают минимальное и максимальное значения дат и времени, а также разрешающую способность экземпляров класса datetime.
datetime.min
Атрибут класса, представляющий минимально допустимую дату и время
(datetime.datetime(1,1,1,0,0)).
datetime.max
Атрибут класса, представляющий максимально допустимую дату и время
(datetime.datetime(9999,12,31,23,59,59,999999)).
datetime.resolution
Наименьшая различимая разница между двумя неравными объектами
(datetime.timedelta(0,0,1)).

426
Глава 19. Службы операционной системы
Э
кземпляр d класса datetime обладает теми же методами, что и экземпляры классов date и time вместе взятые. Кроме того, он имеет следующие методы:
d.astimezone(tz)
Возвращает новый объект datetime, но с другим часовым поясом tz. Атрибу- ты нового объекта будут соответствовать тому же времени по Гринвичу, но в другом часовом поясе tz.
d.date()
Возвращает объект date с той же датой.
d.replace([year [, month [, day [, hour [, minute [, second [, microsecond [,
tzinfo]]]]]]])
Возвращает новый объект datetime, в котором значения одного или более атрибутов установлены в соответствии со значениями аргументов. Для за- мены отдельных значений можно использовать именованные аргументы.
d.time()
Возвращает объект time с тем же временем. Возвращаемый объект не со- держит информацию о часовом поясе.
d.timetz()
Возвращает объект time с тем же временем и с тем же часовым поясом.
d.utctimetuple()
Возвращает объект time.struct_time, содержащий дату и время, приведен- ные к Гринвичскому времени.
Объекты класса timedelta
Объекты класса timedelta представляют разницу между двумя датами или значениями времени. Эти объекты обычно создаются при вычислении раз- ности между двумя экземплярами класса datetime с помощью оператора вычитания (-). Однако имеется возможность создавать их и вручную, с по- мощью следующего конструктора класса:
timedelta([days [, seconds [, microseconds [, milliseconds [, minutes [, hours
[, weeks ]]]]]]])
Создает объект timedelta, представляющий разницу между двумя датами и значениями времени. Значимыми являются только аргументы days, sec-
onds
и microseconds, которые используются внутренней реализацией для представления разности. Остальные аргументы, если они указаны, пре- образуются в дни, секунды и микросекунды. Эти значения сохраняются в атрибутах days, seconds и microseconds возвращаемого объекта timedelta.
Следующие атрибуты класса описывают минимальное и максимальное значение, а также разрешающую способность экземпляров класса time- delta
:
timedelta.min
Самая большая отрицательная разность, которая может быть представле- на объектом timedelta (timedelta(-999999999)).

Модуль datetime
427
timedelta.max
Самая большая положительная разность, которая может быть представле- большая положительная разность, которая может быть представле- большая положительная разность, которая может быть представле- положительная разность, которая может быть представле- положительная разность, которая может быть представле- разность, которая может быть представле- разность, которая может быть представле-
, которая может быть представле- которая может быть представле- может быть представле- может быть представле- быть представле- быть представле- представле- представле- на объектом timedelta (timedelta(days=999999999, hours=23, minutes=59, sec- onds=59, microseconds=999999)
).
timedelta.resolution
Наименьшая различимая разница между двумя неравными объектами ti- medelta
(timedelta(microseconds=1)).
Математические операции над датами
Важной особенностью модуля datetime является поддержка математиче- ских операций над датами. Оба класса, date и datetime, поддерживают сле- поддерживают сле- дующие операции:
Операция
Описание
td = date1 - date2
Возвращает объект timedelta date2 = date1 + td
Добавляет разность timedelta к объекту date date2 = date1 - td
Вычитает разность timedelta из объекта date date1 < date2
Сравнивание дат date1 <= date2
date1 == date2
date1 != date2
date1 > date2
date1 >= date2
Когда возникает необходимость сравнить две даты, не следует забывать о часовом поясе. Если объект с датой содержит информацию о часовом по- часовом поясе. Если объект с датой содержит информацию о часовом по- часовом поясе. Если объект с датой содержит информацию о часовом по- поясе. Если объект с датой содержит информацию о часовом по- поясе. Если объект с датой содержит информацию о часовом по-
. Если объект с датой содержит информацию о часовом по-
Если объект с датой содержит информацию о часовом по- ясе, его можно будет сравнивать с другим объектом даты, только если он также содержит информацию о часовом поясе; в противном случае будет возбуждено исключение TypeError. Когда выполняется сравнивание двух дат в разных часовых поясах, они сначала приводятся к гринвичскому вре- мени, и только потом сравниваются. Объекты timedelta также поддержива- ют различные математические операции:
Операция
Описание
td3 = td2 + td1
Складывает две разности td3 = td2 - td1
Вычитает одну разность из другой td2 = td1 *
i
Умножает на целое число td2 =
i * td1
td2 = td1 //
i
Целочисленное деление на i с округлением вниз td2 = -td1
Унарные минус и плюс

428
Глава 19. Службы операционной системы
Операция
Описание
td2 = +td1
abs(td)
А
бсолютное значение td1 < td2
Сравнивание td1 <= td2
td1 == td2
td1 != td2
td1 > td2
td1 >= td2
Ниже приводится несколько примеров:
>>> today = datetime.datetime.now()
>>> today.ctime()
‘Thu Oct 20 11:10:10 2005’
>>> oneday = datetime.timedelta(days=1)
>>> tomorrow = today + oneday
>>> tomorrow.ctime()
‘Fri Oct 21 11:10:10 2005’
>>>
Кроме того, все объекты классов date, datetime, time и timedelta являются неизменяемыми. Это означает, что они могут использоваться в качестве ключей словаря, добавляться в множества и использоваться в других опе- рациях.
Объекты класса tzinfo
Многие из методов в модуле datetime выполняют операции над объектами специального класса tzinfo, который используется для представления ин- формации о часовом поясе. Класс tzinfo – это просто базовый класс. От- дельные часовые пояса созданы как классы, производные от tzinfo, и реа- лизуют следующие методы:
tz.dst(dt)
Возвращает объект timedelta, представляющий разность для перехода на летнее время, если это возможно. Если информация о летнем времени недо- ступна, возвращает None. В аргументе dt должен передаваться либо объект datetime
, либо None.
tz.fromutc(dt)
Преобразует объект dt класса datetime из гринвичского времени в локаль- ное и возвращает новый объект datetime. Этот метод вызывается методом astimezone()
объектов datetime. Реализация по умолчанию этого метода уже имеется в классе tzinfo, поэтому обычно нет необходимости переопреде- лять этот метод.
(продолжение)

Модуль datetime
429
tz.tzname(dt)
Возвращает строку с названием часового пояса (например, “US/Central”).
В аргументе dt должен передаваться либо объект datetime, либо None.
tz.utcoffset(dt)
Возвращает объект timedelta, представляющий смещение в минутах ло- кального времени на восток от Гринвича. Смещение включает в себя все элементы, составляющие локальное время, включая разницу между зим- ним и летним временем, если это возможно. В аргументе dt должен пере- даваться либо объект datetime, либо None.
Следующий пример демонстрирует основные принципы объявления часо- вого пояса:
# Переменные, которые должны быть определены
# TZOFFSET – смещение в часах часового пояса относительно Гринвича.
# Например, смещение для часового пояса US/CST составляет -6 часов
# DSTNAME – название часового пояса,
# предусматривающего переход на летнее время
# STDNAME - название часового пояса,
# не предусматривающего переход на летнее время
ёё
class SomeZone(datetime.tzinfo):
def utcoffset(self,dt):
return datetime.timedelta(hours=TZOFFSET) + self.dst(dt)
def dst(self,dt):
# is_dst() – это функция, которую вы должны реализовать сами,
# чтобы иметь возможность проверить, предусматривается ли
# данным часовым поясом переход на летнее время.
if is_dst(dt):
return datetime.timedelta(hours=1)
else:
return datetime.timedelta(0)
def tzname(self,dt):
if is_dst(dt):
return DSTNAME
else:
return STDNAME
Множество примеров объявления часовых поясов можно также найти в электронной документации с описанием модуля datetime.
Анализ строк с датой и временем
При работе с датой и временем часто возникает проблема преобразования различных строковых представлений даты и времени в соответствующие объекты datetime. В модуле datetime имеется единственная функция da- tetime.strptime()
, которая обрабатывает такие строковые представления.
Однако, чтобы воспользоваться ею, необходимо точно определить формат представления даты в строке, используя различные спецификаторы фор- мата (смотрите описание функции time.strptime()). Например, чтобы преоб- разовать строку s=”Aug 23, 2008”, пришлось бы написать вызов d = datetime.
datetime.strptime(s, “%b %d, %Y”)

430
Глава 19. Службы операционной системы
Е
сли вам потребуется интеллектуальный механизм преобразования дат, который автоматически распознает наиболее типичные форматы, при- дется обратиться к сторонним модулям. Посетите сайт каталога пакетов
Python (http://pypi.python.org) и выполните поиск по слову «datetime». Вам будет представлено широкое разнообразие вспомогательных модулей, рас- ширяющих возможности модуля datetime.
1   ...   29   30   31   32   33   34   35   36   ...   82


написать администратору сайта