Hi folks, At various times in the past, people on this list have asked about getting week numbers from DateTime instances. I recently had this requirement, so I wrote a PythonScript to produce an iso_week tuple (year, week_number, dow_monday_is_one__sunday_is_seven) from a DateTime instance. I've submitted the same to the collector as a feature-enhancement patch to DateTime.py. I've tested this by empirically comparing it with the output of mxDateTime's iso_week attribute for all days from 1920-01-01 to some date in the twenty-third century. Note also that this iso_week method does not create additional DateTime instances. See also http://www.cl.cam.ac.uk/~mgk25/iso-time.html -------- PythonScript iso_week Parameters: date doy=date.dayOfYear() dow=(date.dow()-1)%7 y=date.year() thurs_this_week=doy+(3-dow) is_leap=y%4==0 and (y%100!=0 or y%400==0) if thurs_this_week>(is_leap and 366 or 365): week=1 if dow<8: y=y+1 else: mon_this_week=doy-dow day_year_begins=(dow-doy+1)%7 day_of_4_jan=(day_year_begins+3)%7 monday_of_first_week=4-day_of_4_jan week=(mon_this_week-monday_of_first_week)/7+1 if week==0: y=y-1 is_last_leap=y%4==0 and (y%100!=0 or y%400==0) if day_year_begins==4 or (day_year_begins==5 and is_last_leap): week=53 else: week=52 return y,week,dow+1 -------- -- Steve Alexander Software Engineer Cat-Box limited http://www.cat-box.net
Cool. Its all available in Perl as well now. -- Andy McKay. ----- Original Message ----- From: "Steve Alexander" <steve@cat-box.net> To: <zope-dev@zope.org> Sent: Wednesday, March 14, 2001 4:32 AM Subject: [Zope-dev] PythonScript for iso_week
Hi folks,
At various times in the past, people on this list have asked about getting week numbers from DateTime instances.
I recently had this requirement, so I wrote a PythonScript to produce an iso_week tuple (year, week_number, dow_monday_is_one__sunday_is_seven) from a DateTime instance.
I've submitted the same to the collector as a feature-enhancement patch to DateTime.py.
I've tested this by empirically comparing it with the output of mxDateTime's iso_week attribute for all days from 1920-01-01 to some date in the twenty-third century.
Note also that this iso_week method does not create additional DateTime instances.
See also http://www.cl.cam.ac.uk/~mgk25/iso-time.html
-------- PythonScript iso_week
Parameters: date
doy=date.dayOfYear() dow=(date.dow()-1)%7 y=date.year() thurs_this_week=doy+(3-dow) is_leap=y%4==0 and (y%100!=0 or y%400==0)
if thurs_this_week>(is_leap and 366 or 365): week=1 if dow<8: y=y+1 else: mon_this_week=doy-dow day_year_begins=(dow-doy+1)%7 day_of_4_jan=(day_year_begins+3)%7 monday_of_first_week=4-day_of_4_jan week=(mon_this_week-monday_of_first_week)/7+1
if week==0: y=y-1 is_last_leap=y%4==0 and (y%100!=0 or y%400==0) if day_year_begins==4 or (day_year_begins==5 and is_last_leap): week=53 else: week=52
return y,week,dow+1 --------
-- Steve Alexander Software Engineer Cat-Box limited http://www.cat-box.net
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Hee hee. Don't get all the hardcore Python folks in a tizzy now. ;-) ----- Original Message ----- From: "Andy McKay" <andym@ActiveState.com> To: "Steve Alexander" <steve@cat-box.net>; <zope-dev@zope.org> Sent: Wednesday, March 14, 2001 4:50 PM Subject: Re: [Zope-dev] PythonScript for iso_week
Cool. Its all available in Perl as well now.
-- Andy McKay.
----- Original Message ----- From: "Steve Alexander" <steve@cat-box.net> To: <zope-dev@zope.org> Sent: Wednesday, March 14, 2001 4:32 AM Subject: [Zope-dev] PythonScript for iso_week
Hi folks,
At various times in the past, people on this list have asked about getting week numbers from DateTime instances.
I recently had this requirement, so I wrote a PythonScript to produce an iso_week tuple (year, week_number, dow_monday_is_one__sunday_is_seven) from a DateTime instance.
I've submitted the same to the collector as a feature-enhancement patch to DateTime.py.
I've tested this by empirically comparing it with the output of mxDateTime's iso_week attribute for all days from 1920-01-01 to some date in the twenty-third century.
Note also that this iso_week method does not create additional DateTime instances.
See also http://www.cl.cam.ac.uk/~mgk25/iso-time.html
-------- PythonScript iso_week
Parameters: date
doy=date.dayOfYear() dow=(date.dow()-1)%7 y=date.year() thurs_this_week=doy+(3-dow) is_leap=y%4==0 and (y%100!=0 or y%400==0)
if thurs_this_week>(is_leap and 366 or 365): week=1 if dow<8: y=y+1 else: mon_this_week=doy-dow day_year_begins=(dow-doy+1)%7 day_of_4_jan=(day_year_begins+3)%7 monday_of_first_week=4-day_of_4_jan week=(mon_this_week-monday_of_first_week)/7+1
if week==0: y=y-1 is_last_leap=y%4==0 and (y%100!=0 or y%400==0) if day_year_begins==4 or (day_year_begins==5 and is_last_leap): week=53 else: week=52
return y,week,dow+1 --------
-- Steve Alexander Software Engineer Cat-Box limited http://www.cat-box.net
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
participants (3)
-
Andy McKay -
Chris McDonough -
Steve Alexander