summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/calendar.py11
-rw-r--r--Lib/test/test_calendar.py12
2 files changed, 13 insertions, 10 deletions
diff --git a/Lib/calendar.py b/Lib/calendar.py
index 0c1fdad..a82b21a 100644
--- a/Lib/calendar.py
+++ b/Lib/calendar.py
@@ -587,17 +587,12 @@ def formatstring(cols, colwidth=_colwidth, spacing=_spacing):
EPOCH = 1970
-_EPOCH_ORD = datetime.date(EPOCH, 1, 1).toordinal()
-
+_EPOCH_DATETIME = datetime.datetime(EPOCH, 1, 1)
+_SECOND = datetime.timedelta(seconds=1)
def timegm(tuple):
"""Unrelated but handy function to calculate Unix timestamp from GMT."""
- year, month, day, hour, minute, second = tuple[:6]
- days = datetime.date(year, month, 1).toordinal() - _EPOCH_ORD + day - 1
- hours = days*24 + hour
- minutes = hours*60 + minute
- seconds = minutes*60 + second
- return seconds
+ return (datetime.datetime(*tuple[:6]) - _EPOCH_DATETIME) // _SECOND
def main(args):
diff --git a/Lib/test/test_calendar.py b/Lib/test/test_calendar.py
index e8b2ca5..b7ce475 100644
--- a/Lib/test/test_calendar.py
+++ b/Lib/test/test_calendar.py
@@ -2,7 +2,7 @@ import calendar
import unittest
from test import support
-
+import time
result_2004_text = """
2004
@@ -381,13 +381,21 @@ class SundayTestCase(MonthCalendarTestCase):
# A 31-day december starting on friday (2+7+7+7+7+1 days)
self.check_weeks(1995, 12, (2, 7, 7, 7, 7, 1))
+class TimegmTestCase(unittest.TestCase):
+ TIMESTAMPS = [0, 10, 100, 1000, 10000, 100000, 1000000,
+ 1234567890, 1262304000, 1275785153,]
+ def test_timegm(self):
+ for secs in self.TIMESTAMPS:
+ tuple = time.gmtime(secs)
+ self.assertEqual(secs, calendar.timegm(tuple))
def test_main():
support.run_unittest(
OutputTestCase,
CalendarTestCase,
MondayTestCase,
- SundayTestCase
+ SundayTestCase,
+ TimegmTestCase,
)