Работа с датой и временем в Python
В Python есть два модуля для работы с датой в временем: datetime и time .
Модуль datetime
Модуль datetime содержит классы:
Также существует класс tzinfo , который применяется для работы с часовыми поясами.
Класс datetime.date
Класс datetime.date принимает три аргумента: год, месяц и день.
>>> import datetime >>> date = datetime.date(2017, 4, 2) >>> date.year 2017 >>> date.month 4 >>> date.day 2
Давайте посмотрим, какой сейчас день:
>>> today = datetime.date.today() >>> today.year 2018 >>> today.month 4 >>> today.day 21
Класс datetime.datetime
Класс datetime.datetime принимает аргументы: год, месяц, день, час, минута, секунда и микросекунда.
>>> date_time = datetime.datetime(2017, 4, 21, 13, 30, 10) >>> date_time.year 2017 >>> date_time.month 4 >>> date_time.day 21 >>> date_time.hour 13 >>> date_time.minute 30 >>> date_time.second 10
Давайте посмотрим, какое сейчас время:
>>> today = datetime.datetime.today() >>> today datetime.datetime(2018, 4, 21, 12, 43, 27, 786725) >>> today.hour 12 >>> today.minute 43
>>> datetime.datetime.now() # местное время datetime.datetime(2018, 4, 24, 13, 2, 39, 17479) >>> datetime.datetime.utcnow() # время по Гринвичу datetime.datetime(2018, 4, 24, 10, 2, 47, 46330)
Получить из объекта datetime отдельно дату и отдельно время:
>>> today = datetime.datetime.today() >>> today datetime.datetime(2018, 4, 21, 13, 26, 54, 387462) >>> today.date() # отдельно дата datetime.date(2018, 4, 21) >>> today.time() # отдельно время datetime.time(13, 26, 54, 387462)
Классы datetime.date и datetime.datetime содержат метод strftime() , который позволяет создавать строку, отображающую время в более понятной для человека форме.
>>> today = datetime.date.today().strftime("%d.%m.%Y") >>> today '21.04.2018'
>>> import locale >>> locale.setlocale(locale.LC_ALL, "ru") # задаем локаль для вывода даты на русском языке 'ru' >>> today = datetime.datetime.today().strftime("%A, %d.%m.%Y") >>> today 'суббота, 21.04.2018'
%a | Сокращенное название дня недели |
%A | Полное название дня недели |
%b | Сокращенное название месяца |
%B | Полное название месяца |
%c | Дата и время |
%d | День месяца [01,31] |
%H | 24-часовой формат часа [00,23] |
%I | 12-часовой формат часа [01,12] |
%j | День года. Цифровой формат [001,366] |
%m | Номер месяца. Цифровой формат [01,12] |
%M | Минута. Цифровой формат [00,59] |
%p | До полудня или после (AM или PM) |
%S | Секунда. Цифровой формат [00,61] |
%U | Номер недели в году. Цифровой формат [00,53] (с воскресенья) |
%w | День недели. Цифровой формат [0(воскресенье), 6] |
%W | Номер недели в году. Цифровой формат [00,53] (с понедельника) |
%x | Дата |
%X | Время |
%y | Год без века. Цифровой формат [00,99] |
%Y | Год с веком. Цифровой формат |
%Z | Временная зона |
%% | Знак процента |
- datetime.today() — объект datetime из текущей даты и времени; работает также, как и datetime.now() со значением tz=None .
- datetime.now(tz=None) — объект datetime из текущей даты и времени, местное время.
- datetime.utcnow() — объект datetime из текущей даты и времени, по Гринвичу.
- datetime.fromtimestamp(timestamp) — дата из стандартного представления времени.
- datetime.fromordinal(ordinal) — дата из числа, представляющего собой количество дней, прошедших с 01.01.1970.
- datetime.combine(date, time) — объект datetime из комбинации объектов date и time .
- datetime.strptime(date_string, format) — преобразует строку в datetime (так же, как и функция strptime из модуля time ).
- datetime.strftime(format) — преобразует объект datetime в строку согласно формату.
- datetime.date() — объект даты (с отсечением времени).
- datetime.time() — объект времени (с отсечением даты).
- datetime.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]]) — возвращает новый объект datetime с изменёнными атрибутами.
- datetime.timetuple() — возвращает struct_time из datetime .
- datetime.toordinal() — количество дней, прошедших с 01.01.1970.
- datetime.timestamp() — возвращает время в секундах с начала эпохи Unix.
- datetime.weekday() — день недели в виде числа, понедельник — 0, воскресенье — 6.
- datetime.isoweekday() — день недели в виде числа, понедельник — 1, воскресенье — 7.
- datetime.isocalendar() — кортеж (год в формате ISO, ISO номер недели, ISO день недели).
- datetime.isoformat(sep=’T’) — красивая строка вида YYYY-MM-DDTHH:MM:SS.mmmmmm или, если microsecond == 0 , YYYY-MM-DDTHH:MM:SS
- datetime.ctime() — возвращает строковое представление текущего местного времени.
Класс datetime.timedelta
Класс datetime.timedelta позволяет выполнять операции над датами — складывать, вычитать, сравнивать. Конструктор принимает именованные аргументы days , weeks , hours , minutes , seconds , milliseconds , microseconds :
>>> delta = datetime.timedelta(days = 5, hours = 1, minutes = 1) >>> delta datetime.timedelta(5, 3660)
Интервал времени 5 дней, 1 час и 1 минута. Получить результат можно с помощью атрибутов days , seconds и microseconds (5 дней и 3660 секунд):
>>> delta.days 5 >>> delta.seconds 3660
Получить результат в секундах позволяет метод total_seconds() :
>>> today = datetime.datetime.today() # текущая дата >>> today datetime.datetime(2018, 4, 21, 15, 19, 2, 515432) >>> future = datetime.datetime(2019, 4, 21, 15, 19, 2, 515432) # дата на один год больше >>> delta = future - today >>> delta datetime.timedelta(365) >>> delta.total_seconds() # 365 дней в секундах 31536000.0
Прибавить к текущей дате 10 дней, 10 часов и 10 минут:
>>> today = datetime.datetime.today() >>> delta = datetime.timedelta(days = 10, hours = 10, minutes = 10) >>> future = today + delta >>> today # 21 апреля 2018 года, 15:29 datetime.datetime(2018, 4, 21, 15, 29, 29, 265954) >>> future # 2 мая 2018 года, 01:39 datetime.datetime(2018, 5, 2, 1, 39, 29, 265954)
Модуль time
Модуль основан на «эпохе Unix», которая началась 1 января 1970 года:
>>> import time >>> print(time.gmtime(0)) time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
Функция time.time() возвращает время в секундах по Гринвичу, начиная с эпохи Unix, как число с плавающей запятой:
>>> time.time() 1524561056.103065
Функция time.ctime([сек]) преобразует время, выраженное в секундах с начала эпохи Unix, в строку вида «Tue Apr 24 10:36:06 2018»:
>>> print(time.ctime()) Tue Apr 24 10:36:06 2018
Функция time.gmtime([сек]) возвращает время по Гринвичу как объект struct_time
>>> time.gmtime() time.struct_time(tm_year=2018, tm_mon=4, tm_mday=24, tm_hour=9, tm_min=6, tm_sec=29, tm_wday=1, tm_yday=114, tm_isdst=0)
Функция time.localtime([сек]) возвращает местное время (с учетом часового пояса) как объект struct_time
>>> time.localtime() time.struct_time(tm_year=2018, tm_mon=4, tm_mday=24, tm_hour=12, tm_min=6, tm_sec=51, tm_wday=1, tm_yday=114, tm_isdst=0)
Свойство time.altzone показывает смещение часового пояса в секундах к западу от нулевого меридиана. Если часовой пояс находится восточнее, смещение отрицательно:
Функция time.sleep() приостановливает выполнение скрипта на определенное количество секунд.
Свойства и методы класса time
- time.altzone — смещение часового пояса в секундах от нулевого меридиана.
- time.time() — возвращает текущее время в секундах по Гринвичу, прошедшее с начала эпохи Unix.
- time.asctime([time_tuple]) — возвращает строкове представление переданной либо текущей даты.
- time.ctime([сек]) — возвращает строковое представление текущего местного времени.
- time.gmtime([сек]) — возвращает объект struct_time , текущего или переданного времени по Гринвичу.
- time.localtime([сек]) — возвращает объект struct_time , текущего или переданного времени. Представляющий местное время с начала эпохи Unix.
- time.mktime(time_tuple) — преобразует кортеж или объект struct_time во время в секундах.
- time.sleep(сек) — приостановить выполнение программы на заданное количество секунд.
- time.strftime(формат, [time_tuple]) — преобразует кортеж или struct_time в строку по формату.
Дополнительно
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
- 1С:Предприятие (31)
- API (29)
- Bash (43)
- CLI (100)
- CMS (139)
- CSS (50)
- Frontend (75)
- HTML (66)
- JavaScript (150)
- Laravel (72)
- Linux (147)
- MySQL (76)
- PHP (125)
- React.js (66)
- SSH (27)
- Ubuntu (68)
- Web-разработка (509)
- WordPress (73)
- Yii2 (69)
- БазаДанных (95)
- Битрикс (66)
- Блог (29)
- Верстка (43)
- ИнтернетМагаз… (84)
- КаталогТоваров (87)
- Класс (30)
- Клиент (27)
- Ключ (28)
- Команда (69)
- Компонент (60)
- Конфигурация (62)
- Корзина (32)
- ЛокальнаяСеть (28)
- Модуль (34)
- Навигация (31)
- Настройка (140)
- ПанельУправле… (29)
- Плагин (33)
- Пользователь (26)
- Практика (99)
- Сервер (74)
- Событие (27)
- Теория (105)
- Установка (66)
- Файл (47)
- Форма (58)
- Фреймворк (192)
- Функция (36)
- ШаблонСайта (68)
Python: Subtract five days from current date
Write a Python program to subtract five days from the current date.
Sample Solution:
Python Code:
from datetime import date, timedelta dt = date.today() - timedelta(5) print('Current Date :',date.today()) print('5 days before Current Date :',dt)
Current Date : 2017-05-05 5 days before Current Date : 2017-04-30
Visualize Python code execution:
The following tool visualize what the computer is doing step-by-step as it executes the said program:
Python Code Editor:
Contribute your code and comments through Disqus.
What is the difficulty level of this exercise?
Test your Programming skills with w3resource’s quiz.
Follow us on Facebook and Twitter for latest update.
Python: Tips of the Day
How to upgrade all Python packages with pip?
There isn’t a built-in flag yet, but you can use.
pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U
Note: there are infinite potential variations for this. I’m trying to keep this answer short and simple, but please do suggest variations in the comments!
In older version of pip, you can use this instead:
pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U
The grep is to skip editable («-e») package definitions, as suggested by @jawache. (Yes, you could replace grep+cut with sed or awk or perl or. ).
The -n1 flag for xargs prevents stopping everything if updating one package fails.
- Weekly Trends
- Java Basic Programming Exercises
- SQL Subqueries
- Adventureworks Database Exercises
- C# Sharp Basic Exercises
- SQL COUNT() with distinct
- JavaScript String Exercises
- JavaScript HTML Form Validation
- Java Collection Exercises
- SQL COUNT() function
- SQL Inner Join
- JavaScript functions Exercises
- Python Tutorial
- Python Array Exercises
- SQL Cross Join
- C# Sharp Array Exercises
We are closing our Disqus commenting system for some maintenanace issues. You may write to us at reach[at]yahoo[dot]com or visit us at Facebook