Issue 6280: Tests and simpler implementation for calendar.timegm
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 @@
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):