Как вывести текущее время в python
Перейти к содержимому

Как вывести текущее время в python

Как в python получить текущую дату и время

datetime.fromtimestamp(timestamp) — дата из стандартного представления времени.

datetime.date() — объект даты (с отсечением времени).

datetime.time() — объект времени (с отсечением даты).

datetime.combine(date, time) — объект datetime из комбинации объектов date и time.

datetime.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]]) — возвращает новый объект datetime с изменёнными атрибутами.

datetime.weekday() — день недели в числовом формате, понедельник — 0, воскресенье — 6.

datetime.isoweekday() — день недели в числовом формате, понедельник — 1, воскресенье — 7.

datetime.strptime(date_string, format) — преобразует строку в datetime.

datetime.strftime(format) — преобразует datetime в строку в datetime.

Опции strftime из документации на модуль time

Как получить текущее время в секундах?

Мне нужно получить нынешнее время в секундах. Как я могу это сделать? С помощью time.time() я получаю неправильные данные, то есть не 2021 год, а 51 год.

Отслеживать
задан 10 дек 2021 в 19:18
142 1 1 серебряный знак 7 7 бронзовых знаков
Покажите, пожалуйста, как вы получаете 51 год?
10 дек 2021 в 19:36

S. Nick задал хороший вопрос. Моё предположение: Очень похоже, что просто пересчитывается количество секунд в года, дни. минуты и т.д. Просто не учитывается, что это отсчёт от начала Unix epoch. Или я ошибаюсь? Действительно, как получается?

10 дек 2021 в 19:42

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Если считать от нашей эры,то

import datetime (datetime.datetime.now() - datetime.datetime(1, 1, 1, 0, 0)).total_seconds() 

Високосные года учитываются, но

Но всеравно не будет 2021 потому как наша эра началась в первом году. Нулевого никогда не было несмотря на ISO8601 и Питон его не поддерживает.

Хотя можно добавить виртуальный год

(datetime.datetime.now()-datetime.datetime(1,1,1)+ datetime.timedelta(days=366)).total_seconds() 

738499 дней в итоге.

Разделим эти дни на года тупым методом:

>>> def ygen(): . while True: . yield 366 . yield 365 . yield 365 . yield 365 . >>> d = 738499 >>> yg=ygen() >>> y=0 >>> while d>365: . d-=next(yg) . y+=1 . >>> y 2021 >>> d 328 

И получается 2021 год и 328 дней от нулевого года — что-то маловато. гдето потерялась пара недель =) (сегодня 344 день)

>>> def vis(y): . if y % 400 == 0: return 366 . if y % 100 == 0: return 365 . if y % 4 == 0: return 366 . return 365 . >>> >>> d = 738499 >>> y = 0 >>> >>> while d>=vis(y): . d -= vis(y) . y += 1 . >>> d 343 >>> y 2021 

343 дня прошло, идет 344ый — вроде все сошлось

Как получить текущую дату и время в Python

Регистрация, сохранение записей в базе данных и доступ к файлам — все это общие задачи, над которыми работает программист. В каждом из этих случаев дата и время играют важную роль в сохранении значения и целостности данных. Программистам часто приходится взаимодействовать с датой и временем.

В этой статье мы узнаем, как получить текущую дату и время, используя встроенный в Python модуль datetime. С помощью этого модуля мы можем получить все соответствующие данные в одном объекте или извлечь дату и время отдельно.

Мы также узнаем, как настроить дату и время для разных часовых поясов. Наконец, мы рассмотрим преобразование объектов datetime в популярные метки времени Unix или Epoch.

Получение текущей даты и времени с datetime

Модуль datetime содержит различные классы, чтобы получить информацию о дате и времени:

  1. datetime.date : Хранит день, месяц и год
  2. datetime.time : Хранит время в часах, минутах, секундах и микросекундах. Эта информация не зависит от даты
  3. datetime.datetime : Хранит атрибуты date и time

Получим текущую дату и время с объектом datetime.datetime , так как из него легче извлечь объекты date и time . Для начала давайте импортируем модуль datetime :

from datetime import datetime 

Поначалу это выглядит странно, но мы получаем класс datetime из модуля datetime , это две разные вещи.

Мы можем использовать функцию now() , чтобы получить объект с текущей датой и временем:

current_datetime = datetime.now() print(current_datetime) 

Запуск этого файла даст нам следующий вывод:

2019-12-13 12:18:18.290623 

Функция now() дала нам объект со всей датой и временем его создания. Когда мы его печатаем, Python автоматически форматирует объект в строку, чтобы люди могли его легко прочитать.

Вы можете получить отдельные атрибуты даты и времени следующим образом:

print(current_datetime.year) # 2019 print(current_datetime.month) # 12 print(current_datetime.day) # 13 print(current_datetime.hour) # 12 print(current_datetime.minute) # 18 print(current_datetime.second) # 18 print(current_datetime.microsecond) # 290623 

Метод now() идеально подходит для захвата текущего времени и даты. Однако, это излишне, когда вы заботитесь только о дате или времени, но не обоих. Как мы можем получить только информацию о дате?

Получение текущей даты

Есть два способа получить текущую дату в Python. В консоли Python мы можем получить дату из объекта datetime с помощью метода date() :

>>> from datetime import datetime >>> current_date = datetime.now().date() >>> print(current_date) 2019-12-13 

Тем не менее, это кажется пустой тратой на инициализацию объекта datetime только для захвата даты. Альтернативой может быть использование метода today() класса date :

>>> from datetime import date >>> current_date = date.today() >>> print(current_date) 2019-12-13 

Класс datetime.date представляет собой календарную дату. Его атрибуты year , month и day могут быть доступны так же, как мы обращаемся к ним в объекте datetime .

Например, этот оператор print получает каждый атрибут, а также использует метод weekday() для получения дня недели:

>>> print("It's the %dth day of the week, %dth day of the %dth month of the %dth year" % . (current_date.weekday()+1, current_date.day, current_date.month, current_date.year)) It's the 5th day of the week, 13th day of the 12th month of the 2019th year 

Примечание: Метод weekday() возвращает целое число от 0 до 6 для представления дня недели. 0 соответствует понедельнику. Поэтому в нашем примере мы добавили 1, чтобы напечатать 5-й день недели (пятница), хотя метод weekday() вернул 4.

Теперь, когда мы можем получить текущую дату самостоятельно, давайте посмотрим, как мы можем получить текущее время

Получение текущего времени

Мы фиксируем текущее время от объекта datetime , используя метод time() :

>>> from datetime import datetime >>> current_time = datetime.now().time() >>> print(current_time) 12:18:18.290623 

В отличие от получения дат, здесь нет ярлыка для непосредственного отображения текущего времени. Класс datetime.time представляет собой понятие времени как в часах, минутах, секундах и микросекунд — все, что меньше, чем один день.

Как и объект datetime , мы можем получить доступ к его атрибутам напрямую. Вот пример, как мы печатаем current_time в предложении:

>>> print("It's %d o'clock. To be exact, it's %d:%d and %d seconds with %d microseconds" % . (current_time.hour, current_time.hour, current_time.minute, current_time.second, current_time.microsecond)) It's 12 o'clock. To be exact, it's 12:18 and 18 seconds with 290623 microseconds 

По умолчанию функция now() возвращает время вашего местного часового пояса. Что если нам нужно будет преобразовать его в другой, который был установлен в настройках пользователя? Давайте посмотрим, как мы можем предоставить информацию о часовом поясе для получения локализованных объектов time .

Получение текущей даты и времени в другом часовом поясе

Метод now() принимает временную зону в качестве аргумента, так что объект datetime генерируется соответствующим образом. Во-первых, нам нужно получить данные о часовом поясе через библиотеку pytz.

Установите библиотеку pytz :

$ pip3 install pytz 

Теперь давайте используя pytz получим текущую дату и время, если бы мы были в Берлине:

>>> import pytz >>> from datetime import datetime >>> tz = pytz.timezone('Europe/Berlin') >>> berlin_current_datetime = datetime.now(tz) >>> print(berlin_current_datetime) 2019-12-14 00:20:50.840350+01:00 

berlin_current_datetime будет объектом datetime со всеми свойствами и функциями, которые мы видели ранее, но теперь он полностью соответствует часовому поясу Берлина.

Если вы хотите узнать время в UTC, вы можете использовать модуль pytz , как и раньше:

>>> import pytz >>> from datetime import datetime >>> utc_current_datetime = datetime.now(pytz.timezone("UTC")) >>> print(utc_current_datetime) 2019-12-13 23:20:50.840350+00:00 

Кроме того, для времени UTC вам не нужно использовать модуль pytz вообще. Модуль datetime имеет свойство timezone , которое может быть использовано, как в примере:

>>> from datetime import datetime, timezone >>> utc_current_datetime = datetime.now(timezone.utc) >>> print(utc_current_datetime) 2019-12-13 23:20:50.840350+00:00 

Теперь, когда мы можем преобразовать наши даты и время в разные часовые пояса, давайте посмотрим, как мы можем преобразовать его в один из наиболее широко используемых форматов в вычислениях — временные метки Unix.

Преобразование меток времени в даты и время

Компьютерные системы измеряют время на основе количества секунд, прошедших с начала эпохи Unix, то есть 00:00:00 UTC 1 января 1970 года. Приложения, базы данных и протоколы обычно используют временную метку для отображения времени.

Вы можете получить текущую метку времени в Python, используя модуль time :

>>> import time >>> print(time.time()) 1576280665.0915806 

Функция time.time() возвращает число с плавающей запятой с меткой времени Unix. Вы можете преобразовать метку времени в объект datetime , используя функцию fromtimestamp() :

>>> from datetime import datetime >>> print(datetime.fromtimestamp(1576280665)) 2019-12-13 19:44:25 

fromtimestamp() по умолчанию возвращает объект datetime в вашем часовом поясе. Вы можете указать часовой пояс в качестве второго аргумента, если хотите, чтобы он был локализован по-другому.

Например, чтобы преобразовать метку времени в объект datetime в формате UTC, вы можете сделать это:

>>> from datetime import datetime, timezone >>> print(datetime.fromtimestamp(1576280665, timezone.utc)) 2019-12-13 19:44:25+00:00 

И наоборот, вы можете использовать метод timestamp() для преобразования объекта datetime в допустимую метку времени:

>>> from datetime import datetime, timezone >>> print(datetime.now(timezone.utc).timestamp()) 1577117555.940705 

Вывод

Встроенная Python библиотека datetime позволяет нам получать текущую дату и время с помощью функции now() . Мы можем использовать возвращенный объект datetime , чтобы извлечь только часть даты или часть времени. Мы также можем получить текущую дату с помощью функции today() .

По умолчанию Python создает объекты datetime в нашем местном часовом поясе. Если мы используем библиотеку pytz , мы можем конвертировать даты и время в разные часовые пояса.

Наконец, мы использовали функцию fromtimestamp() для получения метки времени Unix для получения объекта datetime . Если у нас есть объект datetime , мы можем получить метку времени, используя его метод timestamp() .

Модуль datetime

Python 3 логотип

Модуль datetime предоставляет классы для обработки времени и даты разными способами. Поддерживается и стандартный способ представления времени, однако больший упор сделан на простоту манипулирования датой, временем и их частями.

Классы, предоставляемые модулем datetime:

Класс datetime.date(year, month, day) — стандартная дата. Атрибуты: year, month, day. Неизменяемый объект.

Класс datetime.time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None) — стандартное время, не зависит от даты. Атрибуты: hour, minute, second, microsecond, tzinfo.

Класс datetime.timedelta — разница между двумя моментами времени, с точностью до микросекунд.

Класс datetime.tzinfo — абстрактный базовый класс для информации о временной зоне (например, для учета часового пояса и / или летнего времени).

Класс datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None) — комбинация даты и времени.

  • datetime.MINYEAR (1) ≤ year ≤ datetime.MAXYEAR (9999)
  • 1 ≤ month ≤ 12
  • 1 ≤ day ≤ количество дней в данном месяце и году

Методы класса datetime:

datetime.today() — объект datetime из текущей даты и времени. Работает также, как и datetime.now() со значением tz=None.

datetime.fromtimestamp(timestamp) — дата из стандартного представления времени.

datetime.fromordinal(ordinal) — дата из числа, представляющего собой количество дней, прошедших с 01.01.1970.

datetime.now(tz=None) — объект datetime из текущей даты и времени.

datetime.combine(date, time) — объект datetime из комбинации объектов date и time.

datetime.strptime(date_string, format) — преобразует строку в datetime (так же, как и функция strptime из модуля time).

datetime.strftime(format) — см. функцию strftime из модуля time.

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() — возвращает время в секундах с начала эпохи.

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() — см. ctime() из модуля time.

Пример работы с классом datetime:

Для вставки кода на Python в комментарий заключайте его в теги

  • Модуль csv - чтение и запись CSV файлов
  • Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
  • Онлайн-обучение Python: сравнение популярных программ
  • Книги о Python
  • GUI (графический интерфейс пользователя)
  • Курсы Python
  • Модули
  • Новости мира Python
  • NumPy
  • Обработка данных
  • Основы программирования
  • Примеры программ
  • Типы данных в Python
  • Видео
  • Python для Web
  • Работа для Python-программистов
  • Сделай свой вклад в развитие сайта!
  • Самоучитель Python
  • Карта сайта
  • Отзывы на книги по Python
  • Реклама на сайте

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *