diff options
Diffstat (limited to 'Lib/calendar.py')
| -rw-r--r-- | Lib/calendar.py | 26 |
1 files changed, 8 insertions, 18 deletions
diff --git a/Lib/calendar.py b/Lib/calendar.py index 3f9b7ba..365ca26 100644 --- a/Lib/calendar.py +++ b/Lib/calendar.py @@ -5,10 +5,7 @@ default, these calendars have Monday as the first day of the week, and Sunday as the last (the European convention). Use setfirstweekday() to set the first day of the week (0=Monday, 6=Sunday).""" -# Revision 2: uses functions from built-in time module - -# Import functions and variables from time module -from time import localtime, mktime, strftime +import datetime __all__ = ["error","setfirstweekday","firstweekday","isleap", "leapdays","weekday","monthrange","monthcalendar", @@ -35,7 +32,7 @@ class _localized_month: self.format = format def __getitem__(self, i): - data = [strftime(self.format, (2001, j, 1, 12, 0, 0, 1, 1, 0)) + data = [datetime.date(2001, j, 1).strftime(self.format) for j in range(1, 13)] data.insert(0, "") return data[i] @@ -49,7 +46,7 @@ class _localized_day: def __getitem__(self, i): # January 1, 2001, was a Monday. - data = [strftime(self.format, (2001, 1, j+1, 12, 0, 0, j, j+1, 0)) + data = [datetime.date(2001, 1, j+1).strftime(self.format) for j in range(7)] return data[i] @@ -89,14 +86,12 @@ def leapdays(y1, y2): Assume y1 <= y2.""" y1 -= 1 y2 -= 1 - return (y2/4 - y1/4) - (y2/100 - y1/100) + (y2/400 - y1/400) + return (y2//4 - y1//4) - (y2//100 - y1//100) + (y2//400 - y1//400) def weekday(year, month, day): """Return weekday (0-6 ~ Mon-Sun) for year (1970-...), month (1-12), day (1-31).""" - secs = mktime((year, month, day, 0, 0, 0, 0, 0, 0)) - tuple = localtime(secs) - return tuple[6] + return datetime.date(year, month, day).weekday() def monthrange(year, month): """Return weekday (0-6 ~ Mon-Sun) and number of days (28-31) for @@ -213,17 +208,12 @@ def calendar(year, w=0, l=0, c=_spacing): return s[:-l] + '\n' EPOCH = 1970 +_EPOCH_ORD = datetime.date(EPOCH, 1, 1).toordinal() + def timegm(tuple): """Unrelated but handy function to calculate Unix timestamp from GMT.""" year, month, day, hour, minute, second = tuple[:6] - assert year >= EPOCH - assert 1 <= month <= 12 - days = 365*(year-EPOCH) + leapdays(EPOCH, year) - for i in range(1, month): - days = days + mdays[i] - if month > 2 and isleap(year): - days = days + 1 - days = days + day - 1 + days = datetime.date(year, month, day).toordinal() - _EPOCH_ORD hours = days*24 + hour minutes = hours*60 + minute seconds = minutes*60 + second |
