A Python port of the Invisible Internet Project (I2P)
1"""RFC 822 / HTTP date formatting.
2
3Ported from net.i2p.util.RFC822Date.
4"""
5
6from __future__ import annotations
7
8import time
9from email.utils import formatdate, parsedate_to_datetime
10
11
12def to_rfc822(timestamp_ms: int) -> str:
13 """Convert millisecond timestamp to RFC 822 date string."""
14 return formatdate(timeval=timestamp_ms / 1000.0, usegmt=True)
15
16
17def parse_rfc822(date_str: str) -> int | None:
18 """Parse an RFC 822 date string to millisecond timestamp.
19
20 Returns None if parsing fails.
21 """
22 try:
23 dt = parsedate_to_datetime(date_str)
24 return int(dt.timestamp() * 1000)
25 except Exception:
26 return None