{{announcement.body}}
{{announcement.title}}

Python Tutorial for Beginners: Modules Related to DateTime

DZone 's Guide to

Python Tutorial for Beginners: Modules Related to DateTime

Python is the language of big data. Sharpen your Python skills with this article on gathering date-time data.

· Big Data Zone ·
Free Resource

Python DateTime Modules

In this article, we will look at the Python DateTime module. We will learn how to create the current time, how to calculate a time gap, and how to produce time differences. According to the Python docs:

“The python DateTime module supplies classes for manipulating dates and times in both simple and complex ways.”

So, the Python DateTime modules contain several classes. Let us discuss them one by one.

Python DateTime Modules : datetime.datetime

Let's discuss how to use the DateTime.datetime class.

Datetime.datetime.today()

datetime.datetime.today()  prints today’s date. See the example below.

>>> print datetime.datetime.today()

2018–08–19 22:49:24.169000

datetime.datetime.now()

datetime.datetime.now() displays the same output as that produced by the datetime.datetime.today().

>>> print datetime.datetime.now()

2018–08–19 22:49:51.541000

But if you provide the time zone then datetime.datetime.now() returns the current time of the specified time zone.

>>>

>>> import pytz

>>> pytz.utc

>>> print datetime.datetime.now(pytz.utc)

2018–08–19 17:23:34.614000+00:00

If you provide the time zone information in a string then the interpreter throws an error.

>>> print datetime.datetime.now(‘US/Eastern’)

Traceback (most recent call last):

File “<stdin>”, line 1, in <module>

TypeError: tzinfo argument must be None or of a tzinfo subclass, not type ‘str’

>>>

datetime.strptime(date_string, format)

The datetime.strptime(date_string, format) takes date_string, formats it as an argument, and returns the datetime object. This is shown below.

>>> import datetime

>>> datetime.datetime.strptime(“May 12 2018”, “%B %d %Y”)

datetime.datetime(2018, 5, 12, 0, 0)

>>> print datetime.datetime.strptime(“May 12 2018 13:03:29”, “%B %d %Y %H:%M:%S”)

2018–05–12 13:03:29

Strftime(format)

The strftime(format)  is used generate the formatted date from the datetime object.

>>> print datetime.datetime.now().strftime(“%d %b, %Y”)

22 Aug, 2018

ctime()

This method converts seconds to a 24-character string in the following form: “Mon Jun 20 23:21:05 1994”.

>>> datetime.datetime.now().ctime()

‘Thu Aug 23 00:07:28 2018’

>>>

isoformat()

isoformat() returns a string representing the date in ISO 8601 format, ‘YYYY-MM-DD’. For example:

datetime.date

>>> datetime.datetime.now().isoformat()

‘2018–08–23T00:11:32.393000’

>>>

datetime.date

Let's now discuss the datetime.date class.

datetime.today()

This method returns today’s date. For example:

>>> import datetime

>>> print datetime.datetime.today()

2018–08–23 23:18:22.044000

>>>

datetime.date.fromtimestamp()

This method converts a Unix stamp or epoch to a date. For example:

>>> print datetime.date.fromtimestamp(0)

1970–01–01

>>>

>>> import time

>>> time.time()

1535047001.754

>>>

>>> print datetime.date.fromtimestamp(1535047001.754)

2018–08–23

>>>

datetime.timedelta

datetime.timedelta is used to create a time difference between two dates or times.

The datetime.timedelta class takes keyworded arguments. According to the Python docs:

"All arguments are optional and default to 0. Arguments may be ints, longs, or floats, and may be positive or negative. Only days, seconds, and microseconds are stored internally. Arguments are converted to those units."

Let's create twp different exercises for delta.

Let's create a time delta of 10 seconds.

>>> import datetime

>>> delta1=datetime.timedelta(seconds=10)

Next, we'll subtract the time delta from the current time.

>>> now1 = datetime.datetime.now()

>>> now1

datetime.datetime(2018, 8, 24, 22, 53, 56, 488000)

>>> print now1

2018–08–24 22:53:56.488000

>>> print now1 — delta1

2018–08–24 22:53:46.488000

Now, we add the time delta to the current time.

>>> print now1 + delta1

2018–08–24 22:54:06.488000

>>>

Let's do another, more complete exercise.

  1. Create a Unix time means an epoch of 10 days ago.
  2. Create a Unix time 10 days later.

Let's go step by step

>>> import datetime

>>> import time

Create two deltas for time difference one for 10 days ago and one for 10 days later.

>>> delta1=datetime.timedelta(days=10)

>>> delta2=datetime.timedelta(days=-10)

Add both deltas to the current time.

>>> now1 = datetime.datetime.now()

>>> ten_days_ago = now1+delta2

>>>

>>> ten_days_later = now1+delta1

>>>

>>> print ten_days_ago

2018–08–14 23:09:04.861000

>>>

>>> print ten_days_later

2018–09–03 23:09:04.861000

>>>

In order to remove the use of a floating point, the strftime method has been used.

>>> date1 = ten_days_ago.strftime( “%Y-%m-%d %H:%M:%S” )

>>> date1

‘2018–08–14 23:09:04’

By the time we use the module, the Unix time or epochs have been created.

>>> int(time.mktime(time.strptime(date1, ‘%Y-%m-%d %H:%M:%S’) ) )

1534268344

>>>

>>> date2 = ten_days_later.strftime(“%Y-%m-%d %H:%M:%S”)

>>>

>>> int(time.mktime( time.strptime(date2, ‘%Y-%m-%d %H:%M:%S’) ) )

1535996344

>>>

Python Calendar Module

Now we’ll use calendar module to print the calendar of a particular month. In order to print a particular month, calendar.month(year, month) will be used as shown below.

>>> import calendar

>>> print calendar.month(2018,8)

August 2018

Mo Tu We Th Fr Sa Su

1 2 3 4 5

6 7 8 9 10 11 12

13 14 15 16 17 18 19

20 21 22 23 24 25 26

27 28 29 30 31

>>>

Let's print the calendar for the 2018 year.

>>> import calendar

>>> print calendar.calendar(2018)

Consider if you want to find out whether a particular year is a leap year or not. You can use calendar.isleap(year).  See the example below.

>>> calendar.isleap( 2000 )

True

>>> calendar.isleap( 2001 )

False

>>> calendar.isleap( 2016 )

True

>>> calendar.isleap( 1992 )

Consider if you want to find out the number of leap years in the range of y1 to y2. See the example below.

>>> calendar.leapdays( 1992 , 2016 )

6

>>> calendar.leapdays( 1991 , 2015 )

6

>>>

The last year is not included in the range.

Consider that you want to know the time in different countries. By default, time-related modules return the time according to your time zone. Let's see how to get the time from a different country.

>>> import datetime

>>> import pytz

Let's check the current time of ‘US/Eastern.’

>>> print datetime.datetime.now(pytz.timezone(‘US/Eastern’))

2018–08–25 14:25:34.712000–04:00

>>>

Let's check the current time in Kolkata, India.

>>> print datetime.datetime.now(pytz.timezone(‘Asia/Kolkata’))

2018–08–25 23:56:40.564000+05:30

If you don’t know the name of the time zone, then you can use search the time zone using the country name.

>>> pytz.country_timezones.get(“NZ”)

[u’Pacific/Auckland’, u’Pacific/Chatham’]

>>>

New Zealand has two timezones.

Let us check the name of the timezone of India

>>> pytz.country_timezones.get(“IN”)

[u’Asia/Kolkata’]

>>>

pytz.country_timezones.keys()

The above line returns the list of country abbreviations as a shown example below.

[u’BD’, u’BE’, u’BF’, u’BG’, u’BA’, u’BB’, u’WF’, u’BL’, u’BM’, u’BN’, u’BO’, u’BH’, u’BI’, u’BJ’, u’BT’, u’JM’, u’BW’, u’WS’, u’BQ’, u’BR’, u’BS’, u’JE’, u’BY’ So on…….]

If you want to confirm whether ‘abbreviation IN’ belongs to India or other countries like Iran, you can use pytz.country_names.get( ‘IN’ ). 

>>> print (pytz.country_names.get( ‘IN’ ) )

#Prints "India"

If you want to check all the countries and their abbreviations, use the following piece of code:

>>> for each in pytz.country_names.iteritems():

… print each

…

(u’BD’, u’Bangladesh’)

(u’BE’, u’Belgium’)

(u’BF’, u’Burkina Faso’)

(u’BG’, u’Bulgaria’)

I hope you have enjoyed this article!

Topics:
big data ,python tutorial ,python tutorial for beginners ,datetime ,data ingestion

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}