PYnative

Python Programming

  • Learn Python
  • Exercises
  • Quizzes
  • Code Editor
  • Tricks
Home » Python » Python DateTime » Python Datetime to Seconds

Python Datetime to Seconds

Updated on: May 17, 2022 | Leave a Comment

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
  • How to convert datetime to Seconds in Python
    • Example: Datetime to Seconds
  • Datetime to seconds using timestamp()
  • Datetime to seconds using a calendar module
  • Seconds/epoch to Datetime
    • Converting epoch time with milliseconds to datetime

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 module

    Python 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.

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())

Output:

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.

Example:

from datetime import datetime

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

Output:

Seconds since epoch: 1540146600.0

Note:

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.

Example:

import calendar
from datetime import datetime

# input datetime
dt = datetime(2018, 10, 22, 0, 0)

print('Datetime to seconds:', calendar.timegm(dt.timetuple()))

Output:

Datetime to seconds: 1540166400

Note:

  • 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.

Example:

from datetime import datetime

# seconds
ts = 1540146600.0

# convert seconds to datetime
dt = datetime.fromtimestamp(ts)
print("datetime is:", dt)

Output:

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.

Example:

from datetime import datetime

seconds = 1536472051807 / 1000.0
dt = datetime.fromtimestamp(seconds).strftime('%Y-%m-%d %H:%M:%S.%f')
print('Datetime is:', dt)

Output:

Datetime is: 2018-09-09 11:17:31.807000

Filed Under: Python, Python DateTime

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

TweetF  sharein  shareP  Pin

About Vishal

Founder of PYnative.com I am a Python developer and I love to write articles to help developers. Follow me on Twitter. All the best for your future Python endeavors!

Related Tutorial Topics:

Python Python DateTime

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
Exercises
Quizzes

Leave a Reply Cancel reply

your email address will NOT be published. all comments are moderated according to our comment policy.

Use <pre> tag for posting code. E.g. <pre> Your entire code </pre>

Posted In

Python Python DateTime
TweetF  sharein  shareP  Pin

  Python DateTime

  • Python DateTime Guide
  • Python Get Current DateTime
  • Python DateTime Formatting
  • Python String to DateTime
  • Python Timestamp
  • Python Timedelta
  • Python TimeZones
  • List All TimeZones in Python

All Python Topics

Python Basics Python Exercises Python Quizzes Python File Handling Python OOP Python Date and Time Python Random Python Regex Python Pandas Python Databases Python MySQL Python PostgreSQL Python SQLite Python JSON

About PYnative

PYnative.com is for Python lovers. Here, You can get Tutorials, Exercises, and Quizzes to practice and improve your Python skills.

Explore Python

  • Learn Python
  • Python Basics
  • Python Databases
  • Python Exercises
  • Python Quizzes
  • Online Python Code Editor
  • Python Tricks

Follow Us

To get New Python Tutorials, Exercises, and Quizzes

  • Twitter
  • Facebook
  • Sitemap

Legal Stuff

  • About Us
  • Contact Us

We use cookies to improve your experience. While using PYnative, you agree to have read and accepted our Terms Of Use, Cookie Policy, and Privacy Policy.

Copyright © 2018–2023 pynative.com