from __future__ import division # Copyright (c) 2010-2019 openpyxl """Manage Excel date weirdness.""" # Python stdlib imports import datetime from datetime import timedelta, tzinfo from math import isnan import re from jdcal import ( gcal2jd, jd2gcal, MJD_0 ) # constants MAC_EPOCH = datetime.date(1904, 1, 1) WINDOWS_EPOCH = datetime.date(1899, 12, 30) CALENDAR_WINDOWS_1900 = sum(gcal2jd(WINDOWS_EPOCH.year, WINDOWS_EPOCH.month, WINDOWS_EPOCH.day)) CALENDAR_MAC_1904 = sum(gcal2jd(MAC_EPOCH.year, MAC_EPOCH.month, MAC_EPOCH.day)) SECS_PER_DAY = 86400 EPOCH = datetime.datetime.utcfromtimestamp(0) ISO_FORMAT = '%Y-%m-%dT%H:%M:%SZ' ISO_REGEX = re.compile(r''' (?P(?P\d{4})-(?P\d{2})-(?P\d{2}))?T? (?P