###### The largest Interview Solution Library on the web
java job freshers job Software walkin in Noida Software walkin in Delhi Walkin India Freshers programmer's job

java tutorials/

# PYTHON - DATE AND TIME

A Python program can handle date and time in several ways. Converting between date formats is a common chore for computers. Python's time and calendar modules help track dates and times.

What is Tick?

Time intervals are floating-point numbers in units of seconds. Particular instants in time are expressed in seconds since 12:00am, January 1, 1970(epoch).

There is a popular time module available in Python which provides functions for working with times and for converting between representations. The function time.time() returns the current system time in ticks since 12:00am, January 1, 1970(epoch).

Example

#!/usr/bin/python
import time; # This is required to include time module.
ticks = time.time()
print "Number of ticks since 12:00am, January 1, 1970:", ticks

This would produce a result something as follows:

Number of ticks since 12:00am, January 1, 1970: 7186862.73399

Date arithmetic is easy to do with ticks. However, dates before the epoch cannot be represented in this form. Dates in the far future also cannot be represented this way - the cutoff point is sometime in 2038 for UNIX and Windows.

What is TimeTuple?

Many of Python's time functions handle time as a tuple of 9 numbers, as shown below:
 Index Field Values 0 4-digit year 2008 1 Month 1 to 12 2 Day 1 to 31 3 Hour 0 to 23 4 Minute 0 to 59 5 Second 0 to 61 (60 or 61 are leap-seconds) 6 Day of Week 0 to 6 (0 is Monday) 7 Day of year 1 to 366 (Julian day) 8 Daylight savings -1, 0, 1, -1 means library determines DST
The above tuple is equivalent to struct_time structure. This structure has following attributes:
 Index Attributes Values 0 tm_year 2008 1 tm_mon 1 to 12 2 tm_mday 1 to 31 3 tm_hour 0 to 23 4 tm_min 0 to 59 5 tm_sec 0 to 61 (60 or 61 are leap-seconds) 6 tm_wday 0 to 6 (0 is Monday) 7 tm_yday 1 to 366 (Julian day) 8 tm_isdst 1 to 366 (Julian day)
Getting Current Time

To translate a time instant from a seconds since the epoch floating-point value into a time-tuple, pass the floating-point value to a function (For example, localtime) that returns a time-tuple with all nine items valid.

#!/usr/bin/python
import time;
localtime = time.localtime(time.time())
print "Local current time :", localtime

This would produce the following result, which could be formatted in any other presentable form:

Local current time : time.struct_time(tm_year=2013, tm_mon=7,
tm_mday=17, tm_hour=21, tm_min=26, tm_sec=3, tm_wday=2, tm_yday=198, tm_isdst=0)

Getting Formatted Time

You can format any time as per your requirement, but simple method to get time in readable format is asctime():

#!/usr/bin/python
import time;
localtime = time.asctime( time.localtime(time.time()) )
print "Local current time :", localtime

This would produce the following result:

Local current time : Tue Jan 13 10:17:09 2009

Getting Calendar for a Month

The calendar module gives a wide range of methods to play with yearly and monthly calendars. Here, we print a calendar for a given month ( Jan 2008 ):

#!/usr/bin/python
import calendar
cal = calendar.month(2008, 1)
print "Here is the calendar:"
print cal;

This would produce the following result:

Here is the calendar:
January 2008
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

The time Module

There is a popular time module available in Python which provides functions for working with times and for converting between representations. Here is the list of all available methods:
 Sr. No. Function with Description 1 time.altzoneThe offset of the local DST timezone, in seconds west of UTC, if one is defined. This is negative if the local DST timezone is east of UTC (as in Western Europe, including the UK). Only use this if daylight is nonzero. 2 time.asctime([tupletime])Accepts a time-tuple and returns a readable 24-character string such as 'Tue Dec 11 18:07:14 2008'. 3 time.clock( )Returns the current CPU time as a floating-point number of seconds. To measure computational costs of different approaches, the value of time.clock is more useful than that of time.time(). 4 time.ctime([secs])Like asctime(localtime(secs)) and without arguments is like asctime( ) 5 time.gmtime([secs])Accepts an instant expressed in seconds since the epoch and returns a time-tuple t with the UTC time. Note : t.tm_isdst is always 0 6 time.localtime([secs])Accepts an instant expressed in seconds since the epoch and returns a time-tuple t with the local time (t.tm_isdst is 0 or 1, depending on whether DST applies to instant secs by local rules). 7 time.mktime(tupletime)Accepts an instant expressed as a time-tuple in local time and returns a floating-point value with the instant expressed in seconds since the epoch. 8 ime.sleep(secs)Suspends the calling thread for secs seconds. 9 time.strftime(fmt[,tupletime])Accepts an instant expressed as a time-tuple in local time and returns a string representing the instant as specified by string fmt. 10 time.strptime(str,fmt='%a %b %d %H:%M:%S %Y')Parses str according to format string fmt and returns the instant in time-tuple format. 11 time.time( )Returns the current time instant, a floating-point number of seconds since the epoch. 12 time.tzset()Returns the current time instant, a floating-point number of seconds since the epoch.
Let us go through the functions briefly:

71. time.altzone

Description

The method altzone()is the attribute of the time module. This returns the offset of the local DST timezone, in seconds west of UTC, if one is defined. This is negative if the local DST timezone is east of UTC (as in Western Europe, including the UK). Only use this if daylight is nonzero.

Syntax

Following is the syntax for altzone() method:

time.altzone

Parameters

NA

Return Value

This method returns the offset of the local DST timezone, in seconds west of UTC, if one is defined.

Example

The following example shows the usage of altzone() method.

#!/usr/bin/python
import time
print "time.altzone %d " % time.altzone

When we run above program, it produces following result:

time.altzone() 25200

72. time.actime([tupletime])

Description

The method asctime() converts a tuple or struct_time representing a time as returned by gmtime() or localtime() to a 24-character string of the following form: 'Tue Feb 17 23:21:05 2009'.

Syntax

Following is the syntax for asctime() method:

time.asctime([t]))

Parameters

t -- This is a tuple of 9 elements or struct_time representing a time as returned by gmtime() or localtime() function.

Return Value

This method returns 24-character string of the following form: 'Tue Feb 17 23:21:05 2009'.

Example

The following example shows the usage of asctime() method.

#!/usr/bin/python
import time
t = time.localtime()
print "time.asctime(t): %s " % time.asctime(t)

When we run above program, it produces following result:

time.asctime(t): Tue Feb 17 09:42:58 2009

73. time.clock( )

Description

The method clock() returns the current processor time as a floating point number expressed in seconds on Unix. The precision depends on that of the C function of the same name, but in any case, this is the function to use for benchmarking Python or timing algorithms.

On Windows, this function returns wall-clock seconds elapsed since the first call to this function, as a floating point number, based on the Win32 function QueryPerformanceCounter.

Syntax

Following is the syntax for clock() method:

time.clock()

Parameters

NA

Return Value

This method returns the current processor time as a floating point number expressed in seconds on Unix and in Windows it returns wall-clock seconds elapsed since the first call to this function, as a floating point number.

Example

The following example shows the usage of clock() method.

#!/usr/bin/python
import time
def procedure():
time.sleep(2.5)
# measure process time
t0 = time.clock()
procedure()
print time.clock() - t0, "seconds process time"
# measure wall time
t0 = time.time()
procedure()
print time.time() - t0, "seconds wall time"

When we run above program, it produces following result:

0.0 seconds process time
2.50023603439 seconds wall time

Note: Not all systems can measure the true process time. On such systems (including Windows), clock usually measures the wall time since the program was started.

74. time.ctime([secs])

Description

The method ctime() converts a time expressed in seconds since the epoch to a string representing local time. If secs is not provided or None, the current time as returned by time() is used. This function is equivalent to asctime(localtime(secs)). Locale information is not used by ctime().

Syntax

Following is the syntax for ctime() method:

time.ctime([ sec ])

Parameters
• sec -- These are the number of seconds to be converted into string representation.
Return Value

This method does not return any value.

Example

The following example shows the usage of ctime() method.

#!/usr/bin/python
import time
print "time.ctime() : %s" % time.ctime()

When we run above program, it produces following result:

time.ctime() : Tue Feb 17 10:00:18 2009

75. time.gmtime([secs])

Description

The method gmtime() converts a time expressed in seconds since the epoch to a struct_time in UTC in which the dst flag is always zero. If secs is not provided or None, the current time as returned by time() is used.
Syntax

Following is the syntax for gmtime() method:

time.gmtime([ sec ])

Parameters

sec -- These are the number of seconds to be converted into structure struct_time representation.

Return Value

This method does not return any value.

Example

The following example shows the usage of gmtime() method.

#!/usr/bin/python
import time
print "time.gmtime() : %s" % time.gmtime()

When we run above program, it produces following result:

time.gmtime() : (2009, 2, 17, 17, 3, 38, 1, 48, 0)

76. time.localtime([secs])

Description

The method localtime() is similar to gmtime() but it converts number of seconds to local time. If secs is not provided or None, the current time as returned by time() is used. The dst flag is set to 1 when DST applies to the given time.
Syntax

Following is the syntax for localtime() method:

time.localtime([ sec ])

Parameters

sec -- These are the number of seconds to be converted into structure struct_time representation.

Return Value

This method does not return any value.

Example

The following example shows the usage of localtime() method.

#!/usr/bin/python
import time
print "time.localtime() : %s" % time.localtime()

When we run above program, it produces following result:

time.localtime() : (2009, 2, 17, 17, 3, 38, 1, 48, 0)

77. time.mktime(tupletime)

Description

The method mktime() is the inverse function of localtime(). Its argument is the struct_time or full 9-tuple and it returns a floating point number, for compatibility with time().

If the input value cannot be represented as a valid time, either OverflowError or ValueErrorwill be raised.

Syntax

Following is the syntax for mktime() method:

time.mktime(t)

Parameters

t -- This is the struct_time or full 9-tuple.

Return Value

This method returns a floating point number, for compatibility with time().

Example

The following example shows the usage of mktime() method.

#!/usr/bin/python
import time
t = (2009, 2, 17, 17, 3, 38, 1, 48, 0)
secs = time.mktime( t )
print "time.mktime(t) : %f" % secs
print "asctime(localtime(secs)): %s" % time.asctime(time.localtime(secs))

When we run above program, it produces following result:

time.mktime(t) : 1234915418.000000
asctime(localtime(secs)): Tue Feb 17 17:03:38 2009

78. time.sleep(secs)

Description

The method sleep() suspends execution for the given number of seconds. The argument may be a floating point number to indicate a more precise sleep time.

The actual suspension time may be less than that requested because any caught signal will terminate the sleep() following execution of that signal's catching routine.

Syntax

Following is the syntax for sleep() method:

time.sleep(t)

Parameters

t -- This is the number of seconds execution to be suspended.

Return Value

This method does not return any value.

Example

The following example shows the usage of sleep() method.

#!/usr/bin/python
import time
print "Start : %s" % time.ctime()
time.sleep( 5 )
print "End : %s" % time.ctime()

When we run above program, it produces following result:

Start : Tue Feb 17 10:19:18 2009
End : Tue Feb 17 10:19:23 2009

79. time.strftime(fmt[,tupletime])

Description

The method strftime() converts a tuple or struct_time representing a time as returned by gmtime() or localtime() to a string as specified by the format argument.

If t is not provided, the current time as returned by localtime() is used. format must be a string. An exception ValueError is raised if any field in t is outside of the allowed range.

Syntax

Following is the syntax for strftime() method:

time.strftime(format[, t])

Parameters
• t -- This is the time in number of seconds to be formatted.
• format -- This is the directive which would be used to format given time. The following directives can be embedded in the format string:
Directive
• %a - abbreviated weekday name
• %A - full weekday name
• %b - abbreviated month name
• %B - full month name
• %c - preferred date and time representation
• %C - century number (the year divided by 100, range 00 to 99)
• %d - day of the month (01 to 31)
• %D - same as %m/%d/%y
• %e - day of the month (1 to 31)
• %g - like %G, but without the century
• %G - 4-digit year corresponding to the ISO week number (see %V).
• %h - same as %b
• %H - hour, using a 24-hour clock (00 to 23)
• %I - hour, using a 12-hour clock (01 to 12)
• %j - day of the year (001 to 366)
• %m - month (01 to 12)
• %M - minute
• %n - newline character
• %p - either am or pm according to the given time value
• %r - time in a.m. and p.m. notation
• %R - time in 24 hour notation
• %S - second
• %t - tab character
• %T - current time, equal to %H:%M:%S
• %u - weekday as a number (1 to 7), Monday=1. Warning: In Sun Solaris Sunday=1
• %U - week number of the current year, starting with the first Sunday as the first day of the first week
• %V - The ISO 8601 week number of the current year (01 to 53), where week 1 is the first week that has at least 4 days in the current year, and with Monday as the first day of the week
• %W - week number of the current year, starting with the first Monday as the first day of the first week
• %w - day of the week as a decimal, Sunday=0
• %x - preferred date representation without the time
• %X - preferred time representation without the date
• %y - year without a century (range 00 to 99)
• %Y - year including the century
• %Z or %z - time zone or name or abbreviation
• %% - a literal % character
Return Value

This method does not return any value.

Example

The following example shows the usage of strftime() method.

#!/usr/bin/python
import time
t = (2009, 2, 17, 17, 3, 38, 1, 48, 0)
t = time.mktime(t)
print time.strftime("%b %d %Y %H:%M:%S", time.gmtime(t))

When we run above program, it produces following result:

Feb 18 2009 00:03:38

80. time.strptime(str,fmt='%a %b %d %H:%M:%S %Y')

Description

The method strptime() parses a string representing a time according to a format. The return value is a struct_time as returned by gmtime() or localtime().

The format parameter uses the same directives as those used by strftime(); it defaults to "%a %b %d %H:%M:%S %Y" which matches the formatting returned by ctime().

If string cannot be parsed according to format, or if it has excess data after parsing, ValueError is raised.

Syntax

Following is the syntax for strptime() method:

time.strptime(string[, format])

Parameters
• string -- This is the time in string format which would be parsed based on the given format.
• format -- This is the directive which would be used to parse the given string.
The following directives can be embedded in the format string:

Directive
• %a - abbreviated weekday name
• %A - full weekday name
• %b - abbreviated month name
• %B - full month name
• %c - preferred date and time representation
• %C - century number (the year divided by 100, range 00 to 99)
• %d - day of the month (01 to 31)
• %D - same as %m/%d/%y
• %e - day of the month (1 to 31)
• %g - like %G, but without the century
• %G - 4-digit year corresponding to the ISO week number (see %V).
• %h - same as %b
• %H - hour, using a 24-hour clock (00 to 23)
• %I - hour, using a 12-hour clock (01 to 12)
• %j - day of the year (001 to 366)
• %m - month (01 to 12)
• %M - minute
• %n - newline character
• %p - either am or pm according to the given time value
• %r - time in a.m. and p.m. notation
• %R - time in 24 hour notation
• %S - second
• %t - tab character
• %T - current time, equal to %H:%M:%S
• %u - weekday as a number (1 to 7), Monday=1. Warning: In Sun Solaris Sunday=1
• %U - week number of the current year, starting with the first Sunday as the first day of the first week
• %V - The ISO 8601 week number of the current year (01 to 53), where week 1 is the first week that has at least 4 days in the current year, and with Monday as the first day of the week
• %W - week number of the current year, starting with the first Monday as the first day of the first week
• %w - day of the week as a decimal, Sunday=0
• %x - preferred date representation without the time
• %X - preferred time representation without the date
• %y - year without a century (range 00 to 99)
• %Y - year including the century
• %Z or %z - time zone or name or abbreviation
• %% - a literal % character
Return Value

This return value is struct_time as returned by gmtime() or localtime().

Example

The following example shows the usage of strptime() method.

#!/usr/bin/python
import time
struct_time = time.strptime("30 Nov 00", "%d %b %y")
print "returned tuple: %s " % struct_time

When we run above program, it produces following result:

returned tuple: (2000, 11, 30, 0, 0, 0, 3, 335, -1)

81. time.time( )

Description

The method time() returns the time as a floating point number expressed in seconds since the epoch, in UTC.

Note: Even though the time is always returned as a floating point number, not all systems provide time with a better precision than 1 second. While this function normally returns non-decreasing values, it can return a lower value than a previous call if the system clock has been set back between the two calls.

Syntax

Following is the syntax for time() method:

time.time()

Parameters

NA

Return Value

This method returns the time as a floating point number expressed in seconds since the epoch, in UTC.

Example

The following example shows the usage of time() method.

#!/usr/bin/python
import time
print "time.time(): %f " % time.time()
print time.localtime( time.time() )
print time.asctime( time.localtime(time.time()) )

When we run above program, it produces following result:

time.time(): 1234892919.655932
(2009, 2, 17, 10, 48, 39, 1, 48, 0)
Tue Feb 17 10:48:39 2009

82. time.tzset()

Description

The method tzset() resets the time conversion rules used by the library routines. The environment variable TZ specifies how this is done.

The standard format of the TZ environment variable is (whitespace added for clarity):

std offset [dst [offset [,start[/time], end[/time]]]]
• std and dst: Three or more alphanumerics giving the timezone abbreviations. These will be propagated into time.tzname.
• offset: The offset has the form: .hh[:mm[:ss]]. This indicates the value added the local time to arrive at UTC. If preceded by a '-', the timezone is east of the Prime Meridian; otherwise, it is west. If no offset follows dst, summer time is assumed to be one hour ahead of standard time.
• start[/time], end[/time]: Indicates when to change to and back from DST. The format of the start and end dates are one of the following:
• Jn: The Julian day n (1 <= n <= 365). Leap days are not counted, so in all years February 28 is day 59 and March 1 is day 60.
• n: The zero-based Julian day (0 <= n <= 365). Leap days are counted, and it is possible to refer to February 29.
• Mm.n.d: The d'th day (0 <= d <= 6) or week n of month m of the year (1 <= n <= 5, 1 <= m <= 12, where week 5 means 'the last d day in month m' which may occur in either the fourth or the fifth week). Week 1 is the first week in which the d'th day occurs. Day zero is Sunday.
• time: This has the same format as offset except that no leading sign ('-' or '+') is allowed. The default, if time is not given, is 02:00:00.
Syntax

Following is the syntax for tzset() method:

time.tzset()

Parameters

NA

Return Value

This method does not return any value.

Example

The following example shows the usage of tzset() method.

#!/usr/bin/python
import time
import os
os.environ['TZ'] = 'EST+05EDT,M4.1.0,M10.5.0'
time.tzset()
print time.strftime('%X %x %Z')
os.environ['TZ'] = 'AEST-10AEDT-11,M10.5.0,M3.5.0'
time.tzset()
print time.strftime('%X %x %Z')

When we run above program, it produces following result:

13:00:40 02/17/09 EST
05:00:40 02/18/09 AEDT

There are following two important attributes available with time module:
 Sr. No. Attribute with Description 1 time.timezoneAttribute time.timezone is the offset in seconds of the local time zone (without DST) from UTC (>0 in the Americas; <=0 in most of Europe, Asia, Africa). 2 time.tznameAttribute time.tzname is a pair of locale-dependent strings, which are the names of the local time zone without and with DST, respectively.
The calendar Module
The calendar module supplies calendar-related functions, including functions to print a text calendar for a given month or year.

By default, calendar takes Monday as the first day of the week and Sunday as the last one. To change this, call calendar.setfirstweekday() function.

Here is a list of functions available with the calendar module:
 Sr. No. Function with Description 1 calendar.calendar(year,w=2,l=1,c=6)Returns a multiline string with a calendar for year formatted into three columns separated by c spaces. w is the width in characters of each date; each line has length 21*w+18+2*c. l is the number of lines for each week. 2 calendar.firstweekday( )Returns the current setting for the weekday that starts each week. By default, when calendar is first imported, this is 0, meaning Monday. 3 calendar.isleap(year)Returns True if year is a leap year; otherwise, False. 4 calendar.leapdays(y1,y2)Returns the total number of leap days in the years within range(y1,y2). 5 calendar.month(year,month,w=2,l=1)Returns a multiline string with a calendar for month of year, one line per week plus two header lines. w is the width in characters of each date; each line has length 7*w+6. l is the number of lines for each week. 6 calendar.monthcalendar(year,month)Returns a list of lists of ints. Each sublist denotes a week. Days outside month of year are set to 0; days within the month are set to their day-of-month, 1 and up. 7 calendar.monthrange(year,month)Returns two integers. The first one is the code of the weekday for the first day of the month month in year; the second one is the number of days in the month. Weekday codes are 0 (Monday) to 6 (Sunday); month numbers are 1 to 12. 8 calendar.prcal(year, w=2, l=1, c=6)Like print calendar.calendar(year, w, l, c). 9 calendar.prmonth(year, month, w=2, l=1)Like print calendar.month(year, month, w, l). 10 calendar.setfirstweekday(weekday)Sets the first day of each week to weekday code weekday. Weekday codes are 0 (Monday) to 6 (Sunday). 11 calendar.timegm(tupletime)The inverse of time.gmtime: accepts a time instant in time-tuple form and returns the same instant as a floating-point number of seconds since the epoch. 12 calendar.weekday(year,month,day)Returns the weekday code for the given date. Weekday codes are 0 (Monday) to 6 (Sunday); month numbers are 1 (January) to 12 (December).
Other Modules and Functions

If you are interested, then here you would find a list of other important modules and functions to play with date & time in Python:
• The datetime Module
• The pytz Module
• The dateutil Module