Python modules related to datetime

Python datetime modules:

In this article, we will see the Python datetime module. We will learn how to create current time, how to calculate the time gap and how to produce time difference?According to Python docs

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

So,python datetime modules contains several classes. Let us discuss one by one.

Python datetime Modules – The Datetime.datetime

Let us discuss the useful methods of datetime.datetime class.

Datetime.datetime.today()

The Datetime.datetime.today() print the today’s date.  See the example below.

>>> print datetime.datetime.today()

2018-08-19 22:49:24.169000

datetime.datetime.now()

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

>>> print datetime.datetime.now()

2018-08-19 22:49:51.541000

But if you provide time zone then the datetime.datetime.now() returns the current time according to 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 string then 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) take date_string and format as argument and returns the datetime object. As 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 datetime object.

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

22 Aug, 2018

Ctime()

Converts the seconds to a 24-character string of the following form: “Mon Jun 20 23:21:05 1994”.

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

‘Thu Aug 23 00:07:28 2018’

>>>

isoformat()

Return a string representing the date in ISO 8601 format, ‘YYYY-MM-DD’. For example

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

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

>>>

datetime.date

Let us discuss new class datetime.date.

datetime.today()

The method returns today’s date. For example.

>>> import datetime

>>> print datetime.datetime.today()

2018-08-23 23:18:22.044000

>>>

datetime.date.fromtimestamp()

The method converts Unix stamp or epoch to 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

>>>

Learn Programming Languages with Learntek

datetime.timedelta

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

The class datetime.timedelta takes keyworded arguments. According to pydocs

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 us create different-2 exercises for delta.

Let us create time delta of 10 seconds.

>>> import datetime

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

Subtract the time delta to 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

Add the time delta to the current time.

>>> print now1 + delta1

2018-08-24 22:54:06.488000

>>>

Let us do one complete exercise.

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

Let us do 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 the 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 floating point use, 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 use time 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) would 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 us 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 you want to find out the number of leap year 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 you might want to know the time of different country.  By default, time-related modules return the time according to your time zone.  Let see how to get the time of different country

>>> import datetime

>>> import pytz

Let us 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 us check the current time of 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 timezone, then you can use search the timezone using country name.

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

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

>>>

New Zealand has two timezones.

Let us check the name of 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 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 be confirmed whether ‘abbreviation IN’ belongs to India or other countries like Iran. You can use Syntax pytz.country_names.get( ‘IN’ )

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

India

if you want to check the all the countries and its 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’)

So, on.

I hope you have enjoyed the Python datetime Modules Article 😊

Leave a reply:

Your email address will not be published.

Site Footer