- How to convert a datetime object to seconds?
- Date in Python
- Convert Datetime Object to Seconds
- Example: The total_seconds() Method
- Example: Use timestamp() method
- Example: Use calender.timegm() method
- Conclusion
- Нахождение длительности временных интервалов в Python
- Python-модуль datetime
- Создание объектов date
- Создание объектов time
- Создание объектов datetime
- Применение объектов timedelta
- Нахождение временного промежутка между двумя датами
- Выражение длительности временных промежутков в секундах
- Выражение длительности временных промежутков в минутах
- Выражение длительности временных промежутков в часах
- Итоги
How to convert a datetime object to seconds?
In this article, we will learn to convert datetime object to seconds in Python. We will use some built-in modules available and some custom codes as well to see them working. Let’s first have a quick look over what are dates in Python.
Date in Python
In Python, we can work on Date functions by importing a built-in module datetime available in Python. We have date objects to work with dates. This datetime module contains dates in the form of year, month, day, hour, minute, second, and microsecond. The datetime module has many methods to return information about the date object. It requires date, month, and year values to compute the function. Date and time functions are compared like mathematical expressions between various numbers.
Convert Datetime Object to Seconds
In Python, the date and time module provides various functions for the manipulation of dates. We can also convert a datetime object into seconds by applying mathematical operations. For this conversion, datetime module provides total_seconds method, calender method and timestamp method to convert a datetime object to seconds. The starting date is usually specified in UTC, so for proper results the datetime you feed into this formula should be in UTC as well. If your datetime isn’t in UTC already, you will need to convert it before you use it.
Example: The total_seconds() Method
1. datetime.strptime() formats the input timestamp into hh:mm:ss.
2. datetime.datetime() takes a year, month, day as arguments to create datetime object.
3. datetime.total_seconds() returns the total number of seconds.
The below example takes the time string into the acceptable format of hh:mm:ss. Python provides an operation on datetime to compute the difference between two dates. It finds the difference between the initial datetime object and the datetime object created from the time string. The value returned is a timedelta object from which we can use the function total_seconds() to get the value in seconds.
import datetime time = "01:01:09" date_time = datetime.datetime.strptime(time, "%H:%M:%S") a_timedelta = date_time - datetime.datetime(1900, 1, 1) seconds = a_timedelta.total_seconds() print(seconds)
Example: Use timestamp() method
Python 3 provides datetime.timestamp() method to easily convert the datetime object to seconds. This method will only be useful if you need the number of seconds from 1970-01-01 UTC. It returns a float value representing even fractions of a second. It is assumed that the datetime object represents the local time, i.e. it will be the number of seconds from the current time at your location to 1970-01-01 UTC.
from datetime import datetime #get current date dt = datetime.today() seconds = dt.timestamp() print(seconds)
Example: Use calender.timegm() method
Python 3 provides a standard library called calendar which has calendar.timegm() method to easily convert the datetime object to seconds. This method converts a datetime to seconds since Epoch i.e. 1970-01-01 UTC. As the above timestamp() method returns a float value, this method strips off the fractions of a second.
from datetime import datetime #get current date dt = datetime.today() seconds = dt.timestamp() print(seconds)
Conclusion
In this article, we learned to convert a datetime object into seconds format by using datetime module. We discussed the working of datetime functions using different code snippets.
Нахождение длительности временных интервалов в Python
Python-программисту, при работе со значениями, представляющими дату и время, часто нужно вычислять длительность временных интервалов. Из этого материала вы узнаете о том, как находить разницу между двумя временными метками, выраженную в часах, минутах и секундах.
А именно, здесь мы коснёмся следующих вопросов:
- Как пользоваться Python-модулем datetime для работы с датой и временем.
- Что собой представляют объекты timedelta и что они могут дать программисту.
- Как вычислять продолжительность временных интервалов, выражая результат в разных единицах измерения.
Python-модуль datetime
Для работы с датой и временем в Python используется модуль datetime . Он является частью стандартной библиотеки Python. Для того чтобы применить этот модуль в своём проекте — достаточно его импортировать:
Для вычисления продолжительности временного интервала нужно создать две различных отметки времени. Тут есть несколько вариантов:
- Два объекта date — стандартное представление даты.
- Два объекта time — стандартное представление времени.
- Два объекта datetime , комбинирующие сведения, которые обычно хранятся в объектах date и time .
Создание объектов date
Импортируем класс date из модуля datetime . Для того чтобы создать в Python объект date — можно воспользоваться обычной синтаксической конструкцией вида datetime.date(,,) . Вот пример создания объекта date с именем date1 :
from datetime import date date1 = datetime.date(2022,3,27) print(date1) # Вывод: 2022-03-27
Этот код можно попробовать запустить в онлайн-интерпретаторе Python на Geekflare. Ещё можно установить Python у себя.
Из предыдущего примера видно, что дата выводится в формате YYYY-MM-DD .
Обратите внимание на то, что при создании объекта date месяц надо задавать с использованием целого числа, в начале которого нет дополнительных нулей. Обычно в числовой записи месяцев соответствующие числа дополняют нулями. Здесь же, например, чтобы указать Июнь, то есть — 6 месяц — нужно воспользоваться числом 6, а не 06.
Попробуйте запустить следующий фрагмент кода. Тут месяц намеренно записан неправильно — 03 вместо 3. Из-за этого возникает ошибка SyntaxError :
date1 = datetime.date(2022,03,27) print(date1) # Сообщение об ошибке File "", line 1 date1 = datetime.date(2022,03,27) ^ SyntaxError: invalid token
Поговорим теперь о том, как создавать объекты time .
Создание объектов time
Для создания объектов time импортируем класс time . При создании таких объектов указывают следующие атрибуты класса: hour , minute , second и microsecond . Они, соответственно, позволяют указывать часы, минуты, секунды и микросекунды.
Правда, все эти атрибуты являются необязательными. Если какой-то из них опустить, предположим — second , то он, по умолчанию, будет установлен в 0.
В следующем примере показано создание объекта time с именем time1 . Так же, как и при работе с объектами date , объекты time можно выводить в консоль:
from datetime import time time1 = datetime.time(13,27,45,4600) print(time1) # Вывод: 13:27:45.004600
Создание объектов datetime
Как видите, объекты типа date не содержат сведений о времени. А в объектах time нет информации о дате.
Но на практике обычно нужны данные и о дате, и о времени. Поэтому вместо двух вышеописанных классов рекомендуется прибегнуть к классу datetime .
Обратиться к этому классу и создать соответствующий объект ( dt1 ) можно так:
dt1 = datetime.datetime(2022,3,27,13,27,45,46000) print(dt1) # Вывод: 2022-03-27 13:27:45.046000
Создадим ещё один объект datetime и дадим ему имя dt2 , опустив при его создании атрибут second . Это приведёт к тому, что он будет установлен в значение по умолчанию — 0.
dt2 = datetime.datetime(2022,6,30,14,28) print(dt2) # Вывод: 2022-06-30 14:28:00
Итак, теперь вы знаете о том, как создавать Python-объекты date , time и datetime , представляющие отметки времени. Пришло время поговорить о том, как находить длительность временных интервалов.
Применение объектов timedelta
В Python объекты timedelta представляют собой сведения о промежутках времени. Это — разница двух объектов date , time или datetime .
Если сложить или вычесть два объекта date , time или datetime , получится объект timedelta . У этого объекта имеются полезные атрибуты и методы, которые могут помочь в деле нахождения длительности временных интервалов.
Посчитаем длительность интервала, задаваемого двумя объектами типа datetime — dt1 и dt2 :
dt1 = datetime.datetime(2022,3,27,13,27,45,46000) dt2 = datetime.datetime(2022,6,30,14,28) tdelta = dt2 - dt1 print(tdelta) print(type(tdelta)) # Вывод 95 days, 1:00:14.954000
Видно, что переменная tdelta хранит разницу между dt1 и dt2 . Тут, кроме того, пользуясь встроенной Python-функцией type() , мы проверили тип tdelta . Это — timedelta .
Проведём ещё один эксперимент.
Нахождение временного промежутка между двумя датами
Рассмотрим простой, но интересный пример.
Задача заключается в том, чтобы получить временную разницу между текущей датой (сегодняшним днём) и днём вашего рождения.
Для того чтобы её решить — надо сформировать первую отметку времени, указывающую на сегодняшний день, и вторую, указывающую на дату дня рождения.
Создадим пару объектов datetime :
- Первый будет хранить сегодняшнюю дату, мы назовём его today .
- Второй будет хранить дату дня рождения. Назовём его bday .
today = datetime.datetime.now() print(today) # Пример вывода: 2022-01-22 09:10:18.489538
Пробуя следующий код, замените значение, попадающее в bday , на дату своего дня рождения текущего года. Это позволит узнать о том, сколько времени вам ещё его ждать в этом году.
Если же ваш день рождения в этом году уже прошёл, можете записать в bday дату из следующего года.
bday = datetime.datetime(2022,8,30,11,59) print(bday) # Пример вывода: 2022-08-30 11:59:00
Следующий шаг нашей работы — нахождение разницы между двумя отметками времени. Её мы будем хранить в переменной time_diff . Подобные переменные, как мы уже говорили, имеют тип timedelta . Нам достаточно вычесть today из bday .
time_diff = bday - today print(f"Your birthday is in ") # Вывод Your birthday is in 220 days, 2:46:00.127416
Для того чтобы узнать о том, сколько полных дней осталось до дня рождения, можно воспользоваться атрибутом days объекта типа timedelta .
tdays = time_diff.days print(f"Your birthday is in days.") # Вывод Your birthday is in 220 days.
Выражение длительности временных промежутков в секундах
Теперь узнаем о том, сколько ждать дня рождения, выразив результат в секундах.
Для этого можно воспользоваться методом total_seconds() объекта типа timedelta . В следующем примере это — всё тот же объект time_diff .
tsecs = time_diff.total_seconds() print(f"Your birthday is seconds away.") # Вывод Your birthday is 19017960.127416 seconds away.
Да, дня рождения придётся подождать!
Теперь вы знаете о том, как вычислять промежутки времени и выражать их в секундах.
Давайте вспомним то, что мы знаем о времени, и поговорим об измерении времени в днях, часах, минутах и секундах. В сутках 24 часа, в часе 60 минут, а 60 секунд — это минута.
Часы, минуты и секунды
Для перехода от секунд к минутам, дням или часам, можно воспользоваться следующей таблицей, деля значение в секундах на соответствующий коэффициент преобразования.
Из | В | Делим на |
Секунд | Минуты | 60 |
Секунд | Часы | 60*60 |
Секунд | Дни | 60*60*24 |
Воспользуемся этими знаниями.
Выражение длительности временных промежутков в минутах
Для того чтобы, имея данные о длительности промежутка времени, выраженные в секундах, узнать его длительность в минутах, нужно разделить общее число секунд на 60.
Разделим то, что хранится в переменной tsecs , на 60, и сохраним то, что получится, в переменной tmins :
tmins = tsecs/60 print(f"Your birthday is minutes away.") # Вывод Your birthday is 316966.0021236 minutes away.
Выражение длительности временных промежутков в часах
Теперь посчитаем длительность временного промежутка, выраженную в часах. Учитывая то, что у нас уже есть значение, выраженное в минутах, для достижения этой цели его можно просто поделить на 60. Или можно поделить значение, выраженное в секундах, на 3600 (60*60).
thrs = tsecs/(60*60) print(f"Your birthday is hours away.") # Вывод Your birthday is 5282.76670206 hours away.
Теперь вы знаете о том, как представлять разные промежутки времени в нужном вам виде.
Итоги
Освоив это руководство, вы узнали следующее:
- Как создавать объекты, содержащие сведения о дате и времени, пользуясь модулем datetime , и как работать с такими объектами.
- Как пользоваться объектами типа timedelta для нахождения длительности временных промежутков или разницы между двумя объектами, содержащими сведения о дате или времени.
- Как выражать длительность временных промежутков в секундах, минутах и часах.
Какие задачи вы решаете с помощью Python?