DeaD_EyE icon

compact ntpdate copied from micropython

DeaD_EyE | PRO | 11/10/22 01:12:27 PM UTC (Edited) | 0 ⭐ | 1405 👁️ | Never ⏰ | []
Python |

650 B

|

None

|

0 👍

/

0 👎

from datetime import datetime, timedelta, timezone
from socket import socket, getaddrinfo, AF_INET, SOCK_DGRAM
from struct import unpack
 
 
def ntp_date(host="pool.ntp.org"):
    NTP_QUERY = bytearray(48)
    NTP_QUERY[0] = 0x1B
    addr = getaddrinfo(host, 123)[0][-1]
 
    with socket(AF_INET, SOCK_DGRAM) as sock:
        sock.settimeout(1)
        res = sock.sendto(NTP_QUERY, addr)
        try:
            msg = sock.recv(48)
        except TimeoutError:
            return None
        
    date = unpack("!I", msg[40:44])[0]
    # NTPs EPOCH starts at 1900-01-01
    return datetime(1900, 1, 1, tzinfo=timezone.utc) + timedelta(seconds=date)
 

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎