Это старая версия документа!
Работа с датой и временем. Пользовательские функции
Работа с датой и временем
Модули:
time - текущие дата/время+ их форматированный вывод
datetime - манипуляции, арифметич операции и т.д.
calendar - календарь
timeit - позволяет измерить время выполнения фрагментов кода
Текущие дата/время
Модуль time
time()- вещественное число, кол-во секунд с начала эпохи (01.01.1970)
gmtime(<sec>= )- возвращает struct_time текущего времени либо указанному кол-ву сек с начала эпохи
localtime(<sec>= )- тоже самое, ток локальное время
mktime(<struct_time>)- -||-
Объект struct_time содержит:
d= time.gmtime()
d.tm_year, d[0]
# Все содержимое
tuple(d)
>> (2017, 11, 21, 14, 19, 34, 1, 325, 0)
Форматирование даты/время
strftime(<строка формата>, <struct_time>= ) - ДТ строкой, в указанном формате
strptime(<строка с датой>, <строка формата>= ) - разбирает строку в struct_time
asctime(<struct_time>= ) - строка в формате «%a %b %d %H:%M:%S»
ctime(<sec>= ) - аналогично предыдущему, но принимает кол-во секунд
Аргументы форматирования:
%a Сокращенное название дня недели Вс, Пн
%A Полное название дня недели воскресенье, понедельник
%w День недели в виде десятичного числа 0…6
%d День месяца в виде десятичной дроби с нулями 01, 02
%-d день месяца в виде десятичного числа 1, 2..
%b Сокращенное название месяца Jan, Feb
%m месяц как десятичное число, дополненное нулями 01, 02
%-м месяц в виде десятичного числа 1, 2
%B Полное название месяца Январь, Февраль
%y год без века в виде десятичного числа, дополненного нулями 99, 00
%-й год без века в виде десятичного числа 0, 99
%Y год с веком в виде десятичного числа 2000, 1999
%H час (24-часовой формат) как десятичное число с нулями 01, 23
%-H час (24-часовой формат) в виде десятичного числа 1, 23
%I час (12-часовой формат) в виде десятичного числа с нулевым заполнением 01, 12
%-I час(12 часов) как десятичное число 1, 12
%p языковой стандарт AM или PM AM, PM
%M Минуты в виде десятичного числа, дополненного нулями 01, 59
%-M Минуты в виде десятичного числа 1, 59
%S Second как десятичное число, дополненное нулями 01, 59
%-S Секунда как десятичное число 1, 59
%f микросекунды в виде десятичного числа, дополненного нулями слева 000000, 999999
%z смещение UTC в формате +ЧЧММ или -ЧЧММ
%Z Название часового пояса
%j день года в виде десятичного числа, дополненного нулями 001, 365
%-j день года в виде десятичного числа 1 365
%U Номер недели в году (первым считается воскресенье) 0, 6
%W Номер недели года 00, 53
Соответствующее представление даты и времени локали %c Пн, 30 сентября, 07:06:05 2013 г.
%x языковое стандартное представление даты 30.11.98
Соответствующее представление времени локали %X 10:03:43
%% Буквенный символ «%» %
"Засыпание" скрипта
Модуль "datetime" манипуляции с ДТ
Модуль содержит классы:
timedelta - дата в виде кол-ва дней, сек, микросек. Экземпляр можно складывать с date/datetime. Результат будет в этом формате
date, time, datetime - дата, время, комбинация даты/время в виде объекта
tzinfo - time zone
timedelta
Конструктор- timedelta(<days>=, <seconds>=, <microsec>=, <milisec>=, <minutes>=, <hours>=, <weeks>= )
Можно присваивать в порядке следования, либо именованными аргументами (timedelta(hours= 1))
Поддерживаются арифметические операции, сравнение и т.д.
d1= datetime.timedelta(days= 2)
d2= datetime.timedelta(days= 7)
d1 + d2, d1 / d2 ...
date
Операции над датами. date(<год>, <месяц>, <день>).
Для получения есть методы:
d= datetime.date.today()
d.day, d.month, d.year
Есть методы: replace(), strftime(), isoformat(), ctime(), timetuple(), toordinal(), weekday(), isoweekday(), isocalendar().
time
Операции над временем. time(<hour>=, <minute>=, <second>=, <microsec>=, <tzinfo>=, <fold>= )
Арифметические действия не поддерживаются, только сравнение.
datetime
В целом аналогично предыдущим, включает многое из них, в конструкторе обязательно дата, время не обязательно
today(), now(<Timezone>= )- если зона не указана, то аналогичен первому методу.
utcnow() - текущее время UTC
[utc]fromtimestamp(<sec>)
combine(<date>, <time>) - на основе двух экземпляров
strptime(<строка даты>, <формат>) - строка в дату
Модуль calendar
Содержит классы для вывода календаря в простом, текстовом виде
Базовый класс Calendar, возвратит перечень всех чисел указанного месяца, сгруппированных по дням недели
TextCalendar (LocateCalendar ) в виде форматированного текста (локализованные названия)
HTMLCalendar, LocateHTMLCalendar в html формате
import calendar
c= calendar.Calendar(0)
print(c.monthdayscalendar(2017, 11))
c= calendar.TextCalendar(0)
print(c.formatyear(2017))
Другие функции
weekheader() -
isleap() -
weekday() -
Атрибуты:
day_[name,abbr] - список, содержащий перечень локализованных названий дней недели
month_[name,abbr] - список, содержащий перечень локализованных названий месяцев
Время выполнения фрагментов кода
Замер не конкретного куска кода а лишь образца кода, который передается строкой..
from timeit import Timer
Timer(<stmt>=, <setup>=, <timer>= ) - в первом указывается код, который нужно замерить, второй- код который нужно выполнить перед измерением
code1= """ for line in arr: ... """
t1= Timer(stmt= code1)
>> t1.timeit()
Пользовательские функции
Определение и вызов
Расположение определения
Необязательные параметры
Переменное число параметров
Анонимные функции
Функции-генераторы
Декораторы функции
Рекурсия
Глобальные и локальные переменные
Вложенные функции
Аннотации функций