Datetime.datetime.now: примеры (PYTHON)
datetime.datetime.now(tz: datetime.tzinfo=None): datetime.datetimeФункция datetime.datetime.now()
Метод datetime.now() является методом класса datetime из модуля datetime в Python. Его применяют для получения текущей даты и времени.
Метод возвращает объект datetime, содержащий информацию о текущей дате и времени с точностью до микросекунд.
Сигнатура метода: datetime.now(tz=None)
- tz: Необязательный аргумент. Объект, представляющий часовой пояс (подкласс класса
tzinfo). Если аргумент не указан или равенNone, метод возвращает текущее местное время как "наивный" объектdatetime(без информации о часовом поясе). Если указан, метод возвращает время с учётом часового пояса ("aware" datetime).
Возвращаемое значение всегда является экземпляром класса datetime.datetime. Если указан аргумент tz, у объекта будет установлен атрибут tzinfo.
Примеры использования
Получение текущего местного времени (наивный объект datetime):
from datetime import datetime
now_naive = datetime.now()
print(now_naive)
print(type(now_naive))2023-10-26 14:30:15.123456 <class 'datetime.datetime'>
Получение текущего времени в конкретном часовом поясе:
from datetime import datetime, timezone
now_utc = datetime.now(timezone.utc)
print(now_utc)
print(now_utc.tzinfo)2023-10-26 11:30:15.123456+00:00 UTC
Получение отдельных компонентов даты и времени:
now = datetime.now()
print(f"Год: {now.year}")
print(f"Месяц: {now.month}")
print(f"День: {now.day}")
print(f"Час: {now.hour}")
print(f"Минута: {now.minute}")
print(f"Секунда: {now.second}")
print(f"Микросекунда: {now.microsecond}")Год: 2023 Месяц: 10 День: 26 Час: 14 Минута: 30 Секунда: 15 Микросекунда: 123456
Похожие функции в Python
- datetime.today(): Возвращает текущее местное время как наивный объект
datetime, аналогичноdatetime.now()без аргументов. Не принимает параметр часового пояса.datetime.now()является более гибким вариантом. - datetime.utcnow(): До Python 3.12 возвращал текущее время UTC как наивный объект. Теперь считается устаревшим. Рекомендуется использовать
datetime.now(timezone.utc)для получения времени UTC с информацией о часовом поясе. - time.time(): Из модуля
time. Возвращает время в секундах с начала эпохи (обычно 01.01.1970 UTC) в виде числа с плавающей точкой. Используют, когда нужна простая временная метка для вычисления интервалов. - time.localtime() и time.gmtime(): Из модуля
time. Возвращают структурированное время (struct_time) в местном часовом поясе или в UTC соответственно. Удобны для форматированного вывода с помощьюtime.strftime().
Аналоги в других языках программирования
JavaScript: new Date() создаёт объект Date с текущей датой и временем. Не имеет встроенной поддержки произвольных часовых поясов, кроме локального и UTC.
let now = new Date();
console.log(now.toISOString()); // Вывод в формате ISO2023-10-26T11:30:15.123Z
Java: LocalDateTime.now() возвращает текущее время без информации о часовом поясе. ZonedDateTime.now() возвращает время с учётом часового пояса.
import java.time.LocalDateTime;
LocalDateTime now = LocalDateTime.now();
System.out.println(now);2023-10-26T14:30:15.123
PHP: Функция date() или конструктор new DateTime().
$now = new DateTime();
echo $now->format('Y-m-d H:i:s.u');2023-10-26 14:30:15.123456
SQL (например, PostgreSQL): Функция NOW() возвращает текущую дату и время с часовым поясом транзакции.
SELECT NOW();2023-10-26 14:30:15.123456+03
C#: Свойство DateTime.Now возвращает текущее местное время. DateTime.UtcNow возвращает время в UTC.
DateTime now = DateTime.Now;
Console.WriteLine(now.ToString("yyyy-MM-dd HH:mm:ss.ffffff"));2023-10-26 14:30:15.123456
Типичные ошибки
Сравнение "наивных" и "aware" объектов datetime:
from datetime import datetime, timezone
naive = datetime.now()
aware = datetime.now(timezone.utc)
try:
result = naive < aware
except TypeError as e:
print(f"Ошибка: {e}")Ошибка: can't compare offset-naive and offset-aware datetimes
Ошибка при обращении к несуществующему атрибуту:
now = datetime.now()
print(now.seconds) # НеправильноAttributeError: 'datetime.datetime' object has no attribute 'seconds'
Правильно использовать атрибуты second или метод timestamp().
Заблуждение о неизменяемости. Объекты datetime являются неизменяемыми (immutable).
now = datetime.now()
try:
now.year = 2024
except AttributeError as e:
print(f"Ошибка: {e}")Ошибка: attribute 'year' of 'datetime.datetime' objects is not writable
Изменения в последних версиях Python
Начиная с Python 3.12, функция datetime.utcnow() и datetime.utcfromtimestamp() официально считаются устаревшими. При их вызове возникает предупреждение об устаревании (DeprecationWarning). Рекомендуется использовать вместо них datetime.now(timezone.utc) и datetime.fromtimestamp(timestamp, tz=timezone.utc) соответственно. Это изменение направлено на поощрение использования объектов datetime с информацией о часовом поясе ("aware") и предотвращение ошибок, связанных с наивными объектами, представляющими время UTC.
Расширенные примеры применения
Измерение времени выполнения участка кода:
from datetime import datetime
start = datetime.now()
# Имитация длительной операции
sum_result = sum(range(1_000_000))
end = datetime.now()
elapsed = end - start # Получаем объект timedelta
print(f"Операция заняла {elapsed.total_seconds():.6f} секунд")Операция заняла 0.028345 секунд
Создание отметки времени для имени файла:
now = datetime.now()
filename = f"backup_{now:%Y%m%d_%H%M%S}.sql"
print(filename)backup_20231026_143015.sql
Получение времени начала и конца текущего дня:
from datetime import datetime, timedelta
today = datetime.now()
start_of_day = today.replace(hour=0, minute=0, second=0, microsecond=0)
end_of_day = start_of_day + timedelta(days=1) - timedelta(microseconds=1)
print(f"С начала дня: {start_of_day}")
print(f"До конца дня: {end_of_day}")С начала дня: 2023-10-26 00:00:00 До конца дня: 2023-10-26 23:59:59.999999
Определение дня недели:
now = datetime.now()
weekday_name = ["Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье"]
print(f"Сегодня {weekday_name[now.weekday()]}") # weekday() возвращает 0 для понедельникаСегодня Четверг
Парсинг строки и сравнение с текущим временем:
from datetime import datetime
event_time_str = "2023-10-26 18:00:00"
event_time = datetime.strptime(event_time_str, "%Y-%m-%d %H:%M:%S")
now = datetime.now()
if event_time > now:
print("Событие ещё не началось")
else:
print("Событие уже прошло")Событие ещё не началось
питон datetime.datetime.now function comments
- питон datetime.datetime.now - аргументы и возвращаемое значение
- Функция python datetime.datetime.now - описание
- datetime.datetime.now - примеры
- datetime.datetime.now - похожие методы на python
- datetime.datetime.now на php, c#, sql, java
- datetime.datetime.now изменения python
- Примеры datetime.datetime.now на питон