summaryrefslogtreecommitdiffstats
path: root/Lib/calendar.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/calendar.py')
-rw-r--r--Lib/calendar.py26
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