Task : To write a program in Python to find out, in any given year, Friday the 13th dates i.e 13th day of a month which was a Friday.
SOLUTION
To perform this task, we need to first understand how Python handles dates and times. It does so by a built-in module called datetime. datetime helps us in various ways like:
A) It helps us to identify and process time-related elements like dates, hours, minutes, seconds, days of the week, months, years, etc.
B) It offers various services like managing time zones and daylight savings time.
C) It can work with timestamp data.
D) Also,it can extract the day of the week, day of the month, and other date and time formats from strings.
There are five main object classes associated with this module viz
- datetime – It enables us to manipulate times and dates together (month, day, year, hour, second, microsecond).
- date – Enables us to manipulate dates independent of time (month, day, year).
- time – Enables us to manipulate time independent of date (hour, minute, second, microsecond).
- timedelta— A duration of time used for manipulating dates and measuring.
- tzinfo— An abstract class for dealing with time zones.
Depending on the type of task we wish to perform, we make use of these classes as and when required.
Thus,to handle anything related to date and time in Python,datetime is our module of choice.
Now, we will see how to use it in programs!
Now, in order to perform the given task, we need,from any date,the following item:
- weekday using a function of the datetime class.
And, given that we already have the year and month information, we have to just combine these pieces of information to find out what we seek. But, first, in order to start using the date time object, we need to import its datetime class. So, now, we will look at the program to see how exactly the task is performed:
from datetime import datetime ## import datetime class from datetime module
monthlist = ['Jan','Feb','Mar','Apr','May','Jun','July','Aug','Sept','Oct','Nov','Dec'] ##List of months
year = input("Enter Year-->") ## Year is inputted
for i in range(len(monthlist)): ## This loop provides the month and the days of that month
mah = monthlist[i]
if (monthlist[i] == 'Jan'):
mnthnum = 1
daynum = 31
if (monthlist[i] == 'Feb'):
mnthnum = 2
daynum = 28
if (monthlist[i] == 'Mar'):
mnthnum = 3
daynum = 31
if (monthlist[i] == 'Apr'):
mnthnum = 4
daynum = 30
if (monthlist[i] == 'May'):
mnthnum = 5
daynum = 31
if (monthlist[i] == 'Jun'):
mnthnum = 6
daynum = 30
if (monthlist[i] == 'July'):
mnthnum = 7
daynum = 31
if (monthlist[i] == 'Aug'):
mnthnum = 8
daynum = 31
if (monthlist[i] == 'Sept'):
mnthnum = 9
daynum = 30
if (monthlist[i] == 'Oct'):
mnthnum = 10
daynum = 31
if (monthlist[i] == 'Nov'):
mnthnum = 11
daynum = 30
if (monthlist[i] == 'Dec'):
mnthnum = 12
daynum = 31
for j in range(daynum): ## This loop provides each and every day of a given month
## Create a date string from the year, month and day information
dstr = str(year)+"-"+str(mnthnum)+"-"+str(j+1)
##strptime function converts a date string to a date object.
## strptime()
takes two arguments: the date string(dstr) and the string "%Y-%m-%d"
## , an another string that tells strptime()
how to interpret the input string dstr.
my_date = datetime. strptime(dstr,"%Y-%m-%d")
##The weekday() function extracts the day of the week from the date
wkday = my_date.weekday()
## Check for Friday,the 13th date in the given month
if (wkday == 4) and ((j+1) == 13):
print "Friday, the13th falls on”, dstr
OUTPUT:
Enter Year-->2010
Friday, the13th falls on 2010-8-13
>>>