Convert date_time to IMAP4 INTERNALDATE representation. Return string in form: '"DD-Mmm-YYYY HH:MM:SS +HHMM"'. The date_time argument can be a number (int or float) representing seconds since epoch (as returned by time.time()), a 9-tuple representing local time, an instance of
(date_time)
| 1502 | |
| 1503 | |
| 1504 | def Time2Internaldate(date_time): |
| 1505 | |
| 1506 | """Convert date_time to IMAP4 INTERNALDATE representation. |
| 1507 | |
| 1508 | Return string in form: '"DD-Mmm-YYYY HH:MM:SS +HHMM"'. The |
| 1509 | date_time argument can be a number (int or float) representing |
| 1510 | seconds since epoch (as returned by time.time()), a 9-tuple |
| 1511 | representing local time, an instance of time.struct_time (as |
| 1512 | returned by time.localtime()), an aware datetime instance or a |
| 1513 | double-quoted string. In the last case, it is assumed to already |
| 1514 | be in the correct format. |
| 1515 | """ |
| 1516 | if isinstance(date_time, (int, float)): |
| 1517 | dt = datetime.fromtimestamp(date_time, |
| 1518 | timezone.utc).astimezone() |
| 1519 | elif isinstance(date_time, tuple): |
| 1520 | try: |
| 1521 | gmtoff = date_time.tm_gmtoff |
| 1522 | except AttributeError: |
| 1523 | if time.daylight: |
| 1524 | dst = date_time[8] |
| 1525 | if dst == -1: |
| 1526 | dst = time.localtime(time.mktime(date_time))[8] |
| 1527 | gmtoff = -(time.timezone, time.altzone)[dst] |
| 1528 | else: |
| 1529 | gmtoff = -time.timezone |
| 1530 | delta = timedelta(seconds=gmtoff) |
| 1531 | dt = datetime(*date_time[:6], tzinfo=timezone(delta)) |
| 1532 | elif isinstance(date_time, datetime): |
| 1533 | if date_time.tzinfo is None: |
| 1534 | raise ValueError("date_time must be aware") |
| 1535 | dt = date_time |
| 1536 | elif isinstance(date_time, str) and (date_time[0],date_time[-1]) == ('"','"'): |
| 1537 | return date_time # Assume in correct format |
| 1538 | else: |
| 1539 | raise ValueError("date_time not of a known type") |
| 1540 | fmt = '"%d-{}-%Y %H:%M:%S %z"'.format(Months[dt.month]) |
| 1541 | return dt.strftime(fmt) |
| 1542 | |
| 1543 | |
| 1544 |
no test coverage detected