Дата и время в Python
Введение
В этой статье вы узнаете как работать с датой и временем в Python 3.
Текущее время
Создайте файл current_time.py следующего содержания
import datetime
current_time = datetime.datetime.now()
print(f"Сейчас: {current_time}")
# Отдельно час, минута и секунда
print(f"\nЧас: {now.hour}"
f"\nМинута: {now.minute}"
f"\nСекунда: {now.second}"
)
# Отдельно год, месяц и день
print(f"\nГод: {now.year}"
f"\nМесяц: {now.month}"
f"\nДень: {now.day}"
)
python current_time.py
Сейчас: 2024-09-09 09:29:44.185141 Час: 09 Минута: 29 Секунда: 44 Год: 2024 Месяц: 09 День: 09
Сегодняшняя дата
Создайте файл today.py следующего содержания
import datetime
today = datetime.date.today()
print(f"Сегодня: {today}")
python today.py
Сегодня: 2024-09-09
РЕКЛАМА от Яндекса. Может быть недоступна в вашем регионе
Конец рекламы от Яндекса. Если в блоке пусто считайте это рекламой моей телеги
Работа со временем в стандартной библиотеке
Рассмотрим файл date_time.py
import datetime # DATE specified_date = datetime.date(2020, 11, 23) print(f"specified_date: {specified_date}") today = datetime.date.today() print(f"today: {today}") print(f"today.year: {today.year}") print(f"today.month: {today.month}") print(f"today.day: {today.day}") # Monday is 0 Sunday is 6 print(f"today.weekday: {today.weekday()}") # Monday is 1 Sunday is 7 print(f"today.isoweekday: {today.isoweekday()}")
python3 date_time.py
specified_date: 2020-11-23 today: 2024-09-09 today.year: 2024 today.month: 09 today.day: 09 today.weekday: 0 today.isoweekday: 1
Epochtime
Часто бывает удобно использовать именно epochtime. Так как это просто число, все операции по сравнению в секундах или наносекундах это простая арифметика.
import time current_epoch_time = int(time.time())
Временные интервалы
Можно прибавлять временные интервалы к текущему времени или вычитать их из него
import datetime # DATE tdelta = datetime.timedelta(days=7) print(f"next week: {today + tdelta}") print(f"last week: {today - tdelta}")
next week: 2024-09-16 last week: 2024-09-02
bday = datetime.date(2134, 3, 9) till_bday = bday - today print(f"days till 200 birthday: {till_bday.days}") print(f"seconds till 200 birthday: {till_bday.total_seconds()}") # TIME t = datetime.time(9, 30, 45, 100000) print(f"hour: {t.hour}") # DATETIME dt = datetime.datetime(2020, 11, 23, 12, 42, 30, 100000) print(f"time: {dt.time()}") print(f"year: {dt.year}") tdelta = datetime.timedelta(days=7) print(f"dt + delta: {dt + tdelta}") dt_today = datetime.datetime.today() dt_now = datetime.datetime.now() dt_utcnow = datetime.datetime.utcnow() print(f"today: {dt_today}\nnow: {dt_now}\nutc: {dt_utcnow}")
days till 200 birthday: 40851 seconds till 200 birthday: 3529526400.0 hour: 9 time: 09:29:44.100000 year: 2024 dt + delta: 2024-09-16 09:29:44.100000 today: 2024-09-09 09:29:44.764377 now: 2024-09-09 09:29:44.764386 utc: 2024-09-09 06:29:44.764390
Функции из datetime
_is_leap()
Определяет високосный ли год
def _is_leap(year): "year -> 1 if leap year, else 0." return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)
_days_before_year()
Определяет сколько дней прошло между 1 января 1-го года и 1 января заданного года
def _days_before_year(year): "year -> number of days before January 1st of year." y = year - 1 return y*365 + y//4 - y//100 + y//400
fromtimestamp
Конвертировать время из формата
epochtime
в обычный можно с помощью метода
fromtimestamp
Время в формате
epochtime
получим с помощью метода
st_mtime
из библиотеки
pathlib
from pathlib import Path from datetime import datetime with open("cities.txt", "w") as f: f.write("Barcelona, Benalmadena, Cordoba, Malaga, Torremolinos") file = Path("cities.txt") file_stat = file.stat() print(file_stat.st_mtime) print(datetime.fromtimestamp(file_stat.st_mtime))
1725863384.020916 2024-09-09 09:29:44.020916
Конвертировать строку в datetime
Если нужно создать datetime из строки - можно воспользоваться методом strptime()
import datetime time_str = "2024-02-13 17:43:25" format = "%Y-%m-%d %H:%M:%S" new_timestamp = datetime.datetime.strptime(time_str, format) print(new_timestamp) print(type(new_timestamp))
2024-02-13 17:43:25 <class 'datetime.datetime'>
Сравнение времен между собой
Одно из преимуществ, которое можно получить конвертировав время из строки в datetime объект - это возможность корректного сравнения временных отметок между собой.
from datetime import datetime format = "%Y-%m-%d %H:%M:%S" midnight = "2024-02-13 00:00:00" noon = "2024-02-13 12:00:00" midnight_timestamp = datetime.strptime(midnight, format) noon_timestamp = datetime.strptime(noon, format) print(midnight_timestamp > noon_timestamp) print(datetime.now() > noon_timestamp)
False True
Основы Python | |
Type Hints | |
__future__ | |
configparser | |
Менеджер контекста | |
docstring | |
#!: Shebang | |
Объекты | |
Итерация | |
os | |
pathlib |
РЕКЛАМА от Яндекса. Может быть недоступна в вашем регионе
Конец рекламы от Яндекса. Если в блоке пусто считайте это рекламой моей телеги