0
#Auther : vivek sharma
#date : 06-11-2006
#Description : This script is used to get the list of week in given year, user have to input the year ,


def WeekFinderFromYear(year):
        """ will return all the week from selected year """
        import datetime

        WEEK = {'MONDAY':0,'TUESDAY':1,'WEDNESDAY':2,'THURSDAY':3,'FRIDAY':4,'SATURDAY':5,'SUNDAY':6}
        MONTH = {'JANUARY':1,'FEBRUARY':2,'MARCH':3,'APRIL':4,'MAY':5,'JUNE':6,'JULY':7,'AUGUST':8,'SEPTEMBER':9,'OCTOBER':10,'NOVEMBER':11,'DECEMBER':12}

        year=int(year)
        month= MONTH['JANUARY']
        day=WEEK['MONDAY']
        dt = datetime.date(year,month,1)
        dow_lst = []

        while dt.weekday() != day:
            dt = dt + datetime.timedelta(days=1)

        lst_month = MONTH.values()
        lst_month.sort()
        for mont in lst_month:
         while dt.month == mont:
            dow_lst.append(dt)
            dt = dt + datetime.timedelta(days=7)

        #for each in dow_lst:
        #   print each
        return dow_lst

year=raw_input("Enter the year:")
week_list = WeekFinderFromYear(year)
for each in week_list:
	print each
3
Contributors
2
Replies
3
Views
10 Years
Discussion Span
Last Post by mawe
0

So your script prints out all the mondays of a year, right?
Here's an easier version (well, maybe not really easier, but with less lines :))

import calendar

year = int(raw_input("Enter year: "))

for month in range(1, 13):
    mondays = [
        day.split()[0] for day in calendar.month(year, month).split("\n")[2:-1]
            if not day.startswith("  ")]
    for monday in mondays:
        print "%i-%02i-%02i" % (year, int(month), int(monday))

PS: I love list comprehensions :)

EDIT: You may have to write calendar.setfirstweekday(0) to make Monday the first day in the week. What is nice is that if you e.g. want to know all the Tuesdays of a year, just write calendar.setfirstweekday(1) .

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.