Дата и время в Python

Содержание
Введение
now: текущее время
today: сегодняшняя дата
Стандартная библиотека
Epochtime
Временные интервалы
Функции из datetime
fromtimestamp
strptime(): datetime из строки
Сравнение времён
Похожие статьи

Введение

В этой статье вы узнаете как работать с датой и временем в 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

github

_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

РЕКЛАМА от Яндекса. Может быть недоступна в вашем регионе

Конец рекламы от Яндекса. Если в блоке пусто считайте это рекламой моей телеги

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: