How to Get the Current Date and Time in Python

How to Get the Current Date and Time in Python

In this Python tutorial, we will learn how to get the current date and time using Python's builtin datetime module. We can use Python datetime module to get the current date and time of the local system. Pythons built-in datetime library allows us to get the current date and time with the now() function. If we utilize the pytz library, we can convert dates and times into different timezones. We use the fromtimestamp() function to take a Unix timestamp to get a datetime object. If we have a datetime object, we can get a timestamp using its timestamp() method.

Introduction

Logging, saving records to the database, and accessing files are all common tasks a programmer works on. In each of those cases, date and time play an important role in preserving the meaning and integrity of the data. Programmers often need to engage with date and time.

In this article we will learn how to get the current date and time using Python's builtin datetime module. With that module, we can get all relevant data in one object, or extract the date and time separately.

We will also learn how to adjust our date and time for different timezones. Finally, we'll look at converting datetime objects to the popular Unix or Epoch timestamps.

Getting the Current Date and Time with datetime

The datetime module contains various classes to get information about the date and time:

  • datetime.date: Stores the day, month and year or a date
  • datetime.time: Stores the time in hours, minutes, seconds, and microseconds. This information is independent from any date
  • datetime.datetime: Stores both date and time attributes

Let's get the current date and time with a datetime.datetime object, as it is easier to extract date and time objects from it. First, let's import the datetime module:

from datetime import datetime

While it looks strange at first, we are getting the datetime class from the datetime module, which are two separate things.

We can use the now() function to get the an object with the current date and time:

current_datetime = datetime.now()
print(current_datetime)

Running this file will give us the following output:

2019-12-13 12:18:18.290623

The now() function gave us an object with all date and time of the moment it was created. When we print it, Python automatically formats the object to a string so it can be read by humans easily. You can read our guide on How to Format Dates in Python to learn various ways to print the time.

You can get individual attributes of the date and time like this:

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

The now() method is perfect for capturing a moment. However, it is redundant when you only care about either the date or the time, but not both. How can we get date information only?

Getting the Current Date

There are two ways to get the current date in Python. In the Python console, we can get the date from a datetime object with the date() method:

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

However, it does seem like a waste to initialize a datetime object only to capture the date. An alternative would be to use the today() method of the date class:

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

The datetime.date class represents a calendar date. Its year, month, and day attributes can be accessed in the same way we access them on the datetime object.

For example, this print statement gets each attribute, and also uses the weekday() method to get the day of the week:

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

Note: The weekday() method returns an integer between 0 and 6 to represent the day of the week. 0 corresponds to Monday. Therefore, in our example we added 1 in order to print the 5th day of the week (Friday), although the weekday() method returned 4.

Now that we can get the current date by itself, let's see how we can get the current time

Getting the Current Time

We capture the current time from a datetime object using the time() method:

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

Unlike retrieving dates, there is no shortcut to capture current the time directly. The datetime.time class represents a notion of time as in hours, minutes, seconds and microseconds - anything that is less than a day.

Like the datetime object, we can access its attributes directly. Here's an example where we print the current_time in a sentence:

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

By default, the now() function returns time your local timezone. What if we'd need to convert it to a different one which was set in a user's preference? Let's see how we can provide timezone information to get localized time objects.

Getting the Current Date and Time in Different Timezone

The now() method accepts a timezone as an argument, so that the datetime object being generated would be appropriately adjusted. First, we need to get timezone data via the pytz library.

Install the pytz library with pip if it's not available on your computer already:

$ pip3 install pytz

Now, let's use pytz to get the current date and time if we were in Berlin:

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

The berlin_current_datetime would be a datetime object with all the properties and functions we saw earlier, but now it perfectly matches what it is for someone who lives there.

If you would like to get the time in UTC, you can use the pytz module like before:

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

Alternatively, for UTC time you don't have to use the pytz module at all. The datetime module has a timezone property, which can be used like this:

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

Now that we can convert our dates and times to match different timezones, let's look at how we can convert it to one of the most widely used formats in computing - Unix timestamps.

Converting Timestamps to Dates and Times

Computer systems measure time based on the number of seconds elapsed since the Unix epoch, that is 00:00:00 UTC on January 1st, 1970. It's common for applications, databases, and protocols to use a timestamp in order to display time.

You can get the current timestamp in Python using the time library:

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

The time.time() function returns a float number with the Unix timestamp. You can convert a timestamp to a datetime object using the fromtimestamp() function:

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

By default, the fromtimestamp() returns a datetime object in your timezone. You can provide a timezone as a second argument if you would like to have it localized differently.

For example, to convert a timestamp to a datetime object in UTC, you can do this:

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

Conversely, you can use the timestamp() method to convert a datetime object to a valid timestamp:

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

Conclusion

Pythons built-in datetime library allows us to get the current date and time with the now() function. We can use the returned datetime object to extract just the date portion or the time portion. We can also get the current date with the today() function.

By default, Python creates datetime objects in our local timezone. If we utilize the pytz library, we can convert dates and times into different timezones.

Finally, we used the fromtimestamp() function to take a Unix timestamp to get a datetime object. If we have a datetime object, we can get a timestamp using its timestamp() method.

Top Python Development Companies | Hire Python Developers

Top Python Development Companies | Hire Python Developers

After analyzing clients and market requirements, TopDevelopers has come up with the list of the best Python service providers. These top-rated Python developers are widely appreciated for their professionalism in handling diverse projects. When...

After analyzing clients and market requirements, TopDevelopers has come up with the list of the best Python service providers. These top-rated Python developers are widely appreciated for their professionalism in handling diverse projects. When you look for the developer in hurry you may forget to take note of review and ratings of the company's aspects, but we at TopDevelopers have done a clear analysis of these top reviewed Python development companies listed here and have picked the best ones for you.

List of Best Python Web Development Companies & Expert Python Programmers.

Hire Dedicated eCommerce Web Developers | Top eCommerce Web Designers

Hire Dedicated eCommerce Web Developers | Top eCommerce Web Designers

Build your eCommerce project by hiring our expert eCommerce Website developers. Our Dedicated Web Designers develop powerful & robust website in a short span of time.

Build your eCommerce project by hiring our expert eCommerce Website developers. Our Dedicated Web Designers develop powerful & robust website in a short span of time.

Hire Now: https://bit.ly/394wdOx

Mobile App Development Company India | Ecommerce Web Development Company India

Mobile App Development Company India | Ecommerce Web Development Company India

Best Mobile App Development Company India, WebClues Global is one of the leading web and mobile app development company. Our team offers complete IT solutions including Cross-Platform App Development, CMS & E-Commerce, and UI/UX Design.

We are custom eCommerce Development Company working with all types of industry verticals and providing them end-to-end solutions for their eCommerce store development.

Know more about Top E-Commerce Web Development Company