====== Работа с датой и временем. Пользовательские функции ====== ===== Работа с датой и временем ===== Модули: * **time** - текущие дата/время+ их форматированный вывод * **datetime** - манипуляции, арифметич операции и т.д. * **calendar** - календарь * **timeit** - позволяет измерить время выполнения фрагментов кода ==== Текущие дата/время ==== Модуль **time** * **time()**- вещественное число, кол-во секунд с начала эпохи (01.01.1970) * **gmtime(= )**- возвращает **struct_time** текущего времени либо указанному кол-ву сек с начала эпохи * **localtime(= )**- тоже самое, ток локальное время * **mktime()**- -||- Объект **struct_time** содержит: * **tm_year (0)**- год * **tm_mon (1)**- месяц * **tm_mday (2)**- день * **tm_hour (3)**- час * **tm_min (4)**- мин * **tm_sec (5)**- сек * **tm_wday (6)**- день недели * **tm_yday (7)**- кол-во дней с начала года * **tm_isdst (8)**- флаг летнего времени d= time.gmtime() d.tm_year, d[0] # Все содержимое tuple(d) >> (2017, 11, 21, 14, 19, 34, 1, 325, 0) ==== Форматирование даты/время ==== * **strftime(<строка формата>, = )** - ДТ строкой, в указанном формате * **strptime(<строка с датой>, <строка формата>= )** - разбирает строку в **struct_time** * **asctime(= )** - строка в формате "%a %b %d %H:%M:%S" * **ctime(= )** - аналогично предыдущему, но принимает кол-во секунд
:!: Аргументы форматирования: * %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 * %% Буквенный символ «%» %
==== "Засыпание" скрипта ==== time.sleep(sec) ==== Модуль "datetime" манипуляции с ДТ ==== Модуль содержит классы: * **timedelta** - дата в виде кол-ва дней, сек, микросек. Экземпляр можно складывать с **date**/**datetime**. Результат будет в этом формате * **date, time, datetime** - дата, время, комбинация даты/время в виде объекта * **tzinfo** - time zone === timedelta === Конструктор- timedelta(=, =, =, =, =, =, = )\\ Можно присваивать в порядке следования, либо **именованными аргументами** (timedelta(hours= 1))\\ Поддерживаются арифметические операции, сравнение и т.д.\\ d1= datetime.timedelta(days= 2) d2= datetime.timedelta(days= 7) d1 + d2, d1 / d2 ... === date === Операции над датами. date(<год>, <месяц>, <день>).\\ Для получения есть методы:\\ * **today()** - текущая дата * **fromtimestamp()** - дата, в соответствии кол-ва секунд с начала эпохи * **fromordinal()** - d= datetime.date.today() d.day, d.month, d.year Есть методы: replace(), strftime(), isoformat(), ctime(), timetuple(), toordinal(), weekday(), isoweekday(), isocalendar().\\ === time === Операции над временем. time(=, =, =, =, =, = )\\ **Арифметические действия не поддерживаются**, только сравнение.\\ === datetime === В целом аналогично предыдущим, включает многое из них, в конструкторе обязательно дата, время не обязательно\\ * **today()**, **now(= )**- если зона не указана, то аналогичен первому методу.\\ * **utcnow()** - текущее время UTC * **[utc]fromtimestamp()** * **combine(,