How to Convert Datetime to Epoch in Python

Epoch has multiple meanings in the programming world. But in Python, it refers to the point where the time starts. In other words, epoch refers to the complete iteration of the dataset during the machine learning model’s training.

Although epoch is used in vast areas like neural network training, you can use it in simpler areas. So, in this blog, you will learn about the examples to convert datetime to epoch in Python. Epoch time shows the seconds passed since January 1, 1970, 00:00:00 (UTC).

How to Convert Datetime to Epoch in Python

There are various ways in Python that you can use to convert datetime to epoch in Python. In this section, we will give examples to different conditions of datetime to Epoch:

Datetime to Epoch Conversion Using Timestamp()

You can convert datetime to epoch using the timestamp parameter.

  1. Import the datetime module.
  2. Use timestamp() like “datetime.datetime(y, mt, d, h, m, s).timestamp()”.  Here, “y”, “mt”, “d”, “h”, “m”, and “s” represent year, month, date, hour, minute, and seconds, respectively.

For example, let’s write a Python program to convert July 21, 2023 to epoch.

import datetime
epoch = datetime.datetime(2023, 7, 21).timestamp()

You will get the following result by running the previous program:

Note: The first datetime is to access the module, and the second is for the class.

Now, let’s see an example of 8 AM on August 23, 2023.

import datetime
epoch = datetime.datetime(2023, 8, 23, 8, 0, 0).timestamp()

Datetime to Epoch Conversion Using Total_Seconds

To use total_seconds for epoch conversion, you must subtract the input date and time from the set epoch date and time, i.e., January 1, 1970. After that, use the total_seconds() function to convert the obtained time into seconds.

  1. Import the datetime module and convert your desired date to the datetime format using the datetime() function.
  2. Now, subtract this datetime from the epoch datetime and use the total_seconds() function.

For example, let’s write a Python program to convert July 21, 2023 to an epoch.

import datetime
date_time = datetime.datetime(2023, 9,  1,  0, 0, 0)
epoch = ( date_time  - datetime.datetime(1970, 1, 1)).total_seconds()

Once you run the program, it will give you the following given result:

Datetime to Epoch Conversion with Calendar Module

You can use the calendar module to convert datetime to epoch in Python.

  1. Import the datetime and calendar modules.
  2. Extract the date and time to a variable, say date_time, by entering your desired date as an argument.
  3. Use the calendar module as calendar.timegm(date_time.timetuple()). This will be the epoch value.
import datetime, calendar
date_time = datetime.datetime(2023, 9, 1)
epoch = calendar.timegm(date_time.timetuple())

After the compilation of the previous program, you will get the following result:

Datetime to Epoch Conversion Using the Strftime Method

We can also use strftime() to convert datetime to epoch. However, the program tends to be platform-dependent, and you might need to tweak it a bit to make it work.

  1. Get the datetime module.
  2. Convert your date and time to datetime using datetime.datetime(). Finally, use the strftime() function with %s as the parameter.

Note: If you are using Linux, use %s (with small s). Whereas if you are using Windows, use %S (with capital S).

For example, convert September 17, 2023 to epoch:

import datetime
epoch = datetime.datetime(2023, 9, 17).strftime('%s')

The previous program shows the following results:

The %s is not an actual argument in Python and varies with the platform that you use. It works only using your system’s local timezone, producing more error-prone results.


Epoch is the value of time in seconds, and its primary application includes the training machine learning algorithms and networks. This blog is all about how to convert the datetime value to epoch in Python. We discussed the basic to advanced ways using total_seconds, timestamp, strftime, and timegm functions. Remember that strftime() can give you errors, so use it correctly.

About the author

Prateek Jangid

A passionate Linux user for personal and professional reasons, always exploring what is new in the world of Linux and sharing with my readers.