python3.7 获取网络时间

1,从网页获取时间 网址: https://beijing-time.org/
在头信息中有个GMT时间 稍加转换就是北京时间了
在这里插入图片描述
获取时间的代码如下

def get_beijin_time():
    try:
        url = 'https://beijing-time.org/'
        request_result = requests.get(url=url)
        if request_result.status_code == 200:
            headers = request_result.headers
            net_date = headers.get("date")
            gmt_time = time.strptime(net_date[5:25], "%d %b %Y %H:%M:%S")
            bj_timestamp = int(time.mktime(gmt_time) + 8 * 60 * 60)
            return datetime.datetime.fromtimestamp(bj_timestamp)
    except Exception as exc:
        return datetime.datetime.now()

另外也可以从 https://www.beijing-time.org/t/time.asp 获取时间
在这里插入图片描述
返回值: t0=new Date().getTime(); nyear=2022; nmonth=1; nday=10; nwday=1; nhrs=10; nmin=48; nsec=59;
剩下的就是字符串的截取拼装

2 利用ntp同步时间
网络时间协议,英文名称:Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。NTP的目的是在无序的Internet环境中提供精确和健壮的时间服务。
关于时间网络协议的相关内容百度一下: 网络时间协议

前提:
1 ntp服务器 https://dns.icoa.cn/ntp/
2 下载 ntp库 pip install ntplib
代码如下

def get_ntp_time():
    ntp_client = ntplib.NTPClient()
    response = ntp_client.request('cn.ntp.org.cn')
    return datetime.datetime.fromtimestamp(response.tx_time)

两种获取时间的完整代码如下

# -*- coding: utf-8 -*-
import datetime
import time

import ntplib
import requests


def get_beijin_time():
    try:
        url = 'https://beijing-time.org/'
        request_result = requests.get(url=url)
        if request_result.status_code == 200:
            headers = request_result.headers
            net_date = headers.get("date")
            gmt_time = time.strptime(net_date[5:25], "%d %b %Y %H:%M:%S")
            bj_timestamp = int(time.mktime(gmt_time) + 8 * 60 * 60)
            return datetime.datetime.fromtimestamp(bj_timestamp)
    except Exception as exc:
        return datetime.datetime.now()


def get_ntp_time():
    ntp_client = ntplib.NTPClient()
    response = ntp_client.request('cn.ntp.org.cn')
    return datetime.datetime.fromtimestamp(response.tx_time)


if __name__ == '__main__':
    bj_time = get_beijin_time()
    print("北京时间: ", bj_time)
    ntp_time = get_ntp_time()
    print("ntp时间: ", ntp_time)

  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值