diff options
-rw-r--r-- | Lib/calendar.py | 11 | ||||
-rw-r--r-- | Lib/test/test_calendar.py | 12 |
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, ) |