def datetime_to_imap(dt): """Convert a datetime instance to a IMAP datetime string If timezone information is missing the current system timezone is used. """ if not dt.tzinfo: dt = dt.replace(tzinfo=FixedOffset.for_system()) return dt.strftime("%d-%b-%Y %H:%M:%S %z")
def _convert_INTERNALDATE(date_string): mo = imaplib.InternalDate.match('INTERNALDATE "%s"' % date_string) if not mo: raise ValueError("couldn't parse date %r" % date_string) zoneh = int(mo.group('zoneh')) zonem = (zoneh * 60) + int(mo.group('zonem')) if mo.group('zonen') == '-': zonem = -zonem tz = FixedOffset(zonem) year = int(mo.group('year')) mon = imaplib.Mon2num[mo.group('mon')] day = int(mo.group('day')) hour = int(mo.group('hour')) min = int(mo.group('min')) sec = int(mo.group('sec')) dt = datetime(year, mon, day, hour, min, sec, 0, tz) # Normalise to host system's timezone return dt.astimezone(FixedOffset.for_system()).replace(tzinfo=None)