赞
踩
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)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。