Python time total seconds

Python Datetime to Seconds

This article will teach you how to convert datetime to seconds in Python.

After reading this Python article, you’ll learn:

  • How to convert datetime to seconds ( number of seconds since epoch).
  • How to convert seconds to datetime

Table of contents

What is Epoch time

When we try to convert datetime to seconds, we need to understand the epoch time first.

In computing, an epoch time is a date and time from which a computer measures system time. It is a starting point or fixed moment in time used to calculate the number of seconds elapsed. The computer’s datetime is determined according to the number of seconds elapsed since the epoch time.

Epoch time is also known as POSIX time or UNIX time. For example, in most UNIX versions, the epoch time starts at 00:00:00 UTC on 1 January 1970.

So when we convert datetime to seconds we will get the number of seconds since epoch. It means the elapsed seconds between input datetime and epoch time (00:00:00 UTC on 1 January 1970).

How to convert datetime to Seconds in Python

Let’s assume you have a datetime (2018,10,22) in a UTC format and you want to calculate the number of seconds since the epoch. The below steps shows two ways to convert datetime to seconds.

  1. Import datetime modulePython datetime module provides various functions to create and manipulate the date and time. Use the from datetime import datetime statement to import a datetime class from a datetime module.
  2. Subtract the input datetime from the epoch time To convert a datetime to seconds, subtracts the input datetime from the epoch time. For Python, the epoch time starts at 00:00:00 UTC on 1 January 1970. Subtraction gives you the timedelta object. Use the total_seconds() method of a timedelta object to get the number of seconds since the epoch.
  3. Use the timestamp() method. If your Python version is greater than 3.3 then another way is to use the timestamp() method of a datetime class to convert datetime to seconds. This method returns a float value representing even fractions of a second.
Читайте также:  Рамка всей страницы css

Example: Datetime to Seconds

from datetime import datetime # input datetime dt = datetime(2018, 10, 22, 0, 0) # epoch time epoch_time = datetime(1970, 1, 1) # subtract Datetime from epoch datetime delta = (dt - epoch_time) print('Datetime to Seconds since epoch:', delta.total_seconds())
Datetime to Seconds since epoch: 1540166400.0

Datetime to seconds using timestamp()

A timestamp is encoded information generally used in UNIX, which indicates the date and time at which a particular event has occurred. This information could be accurate to the microseconds. It is a POSIX timestamp corresponding to the datetime instance.

The below code shows how to convert datetime to seconds using the timestamp() method. This method will only be useful if you need the number of seconds from epoch (1970-01-01 UTC). It returns a number of elapsed seconds since epoch as a float value representing even fractions of a second.

from datetime import datetime # input datetime dt = datetime(2018, 10, 22, 0, 0) print('Seconds since epoch:', dt.timestamp()) 
Seconds since epoch: 1540146600.0

Note that different timezones have an impact on results. Therefore one should consider converting datetime to UTC before converting it to seconds.

To get an accurate result, you should use the UTC datetime. If your datetime isn’t in UTC already, you’ll need to convert it before using it or attach a tzinfo class with the proper timezone offset. Add tzinfo=pytz.utc if using Python 2 or tzinfo=timezone.utc if using Python 3.

Don’t use strptime to convert datetime to seconds using the %s attribute because Python doesn’t support the %s attribute. If you use it, Python will use your systems’ strftime, which uses your local timezone, and you will get an inaccurate result. See docs.

Datetime to seconds using a calendar module

The calendar module provides the timegm() method that returns the corresponding Unix timestamp value, assuming an epoch of 1970 and the POSIX encoding.

  • import clenadar module
  • Use the datetime.timetuple() to get the time tuple from datetime.
  • Next, pass the time tuple to the calendar.timegm() method to convert datetime to seconds.
import calendar from datetime import datetime # input datetime dt = datetime(2018, 10, 22, 0, 0) print('Datetime to seconds:', calendar.timegm(dt.timetuple()))
Datetime to seconds: 1540166400
  • This method strips off the fractions of a second.
  • The calendar’s approch has no way to specify a timezone. If input datetime is aware instance and used a timezone different from the system’s timezone, the result would not be correct (the timezone gets lost in the timetuple() call). To get the correct answer for an ‘aware’ datetime, you can use awaredt.timestamp() .

Seconds/epoch to Datetime

If you want to convert the number of seconds since the epoch to a datetime object, use the fromtimestamp() method of a datetime class.

from datetime import datetime # seconds ts = 1540146600.0 # convert seconds to datetime dt = datetime.fromtimestamp(ts) print("datetime is:", dt) 
datetime is: 2018-10-22 00:00:00

Converting epoch time with milliseconds to datetime

If you want to convert the milliseconds to a datetime object, use the strptime() method of a datetime class. Use the %f format code for parsing.

from datetime import datetime seconds = 1536472051807 / 1000.0 dt = datetime.fromtimestamp(seconds).strftime('%Y-%m-%d %H:%M:%S.%f') print('Datetime is:', dt) 
Datetime is: 2018-09-09 11:17:31.807000

Did you find this page helpful? Let others know about it. Sharing helps me continue to create free Python resources.

About Vishal

I’m Vishal Hule, Founder of PYnative.com. I am a Python developer, and I love to write articles to help students, developers, and learners. Follow me on Twitter

Python Exercises and Quizzes

Free coding exercises and quizzes cover Python basics, data structure, data analytics, and more.

  • 15+ Topic-specific Exercises and Quizzes
  • Each Exercise contains 10 questions
  • Each Quiz contains 12-15 MCQ

Источник

Оцените статью