本节内容:获取准确的实时时间
当服务器的时间没有校准时,我们直接使用time.time()或者datetime.datetime.now()获取到的时间, 就会和我们当前的时间不一致,从而导致时间不准确。
1、实现获取准确的Unix时间戳,
传入"2025-01-01 09:00:00"自动转化对应的Unix时间戳; 没有输入时,则返回实时时间对应的时间戳
import time from datetime import timezone, timedelta, datetime def unix_time(dt): """ 输入: dt="2023-07-02 13:57:00" 输出 对应的Unix时间戳 """ if dt: ... else: SHA_TZ = timezone( timedelta(hours=8), # 我们在东八区 name='Asia/Shanghai', ) # 协调世界时 utc_now = datetime.utcnow().replace(tzinfo=timezone.utc) # 北京时间 dt = utc_now.astimezone(SHA_TZ).strftime('%Y-%m-%d %H:%M:%S') # 转换成时间数组 timeArray = time.strptime(dt, "%Y-%m-%d %H:%M:%S") # 转换成时间戳 timestamp = time.mktime(timeArray) return int(timestamp) if __name__ == '__main__': print(unix_time("2023-07-02 13:57:00"))
2、输出格式化时间:‘%Y-%m-%d %H:%M:%S’
import time from datetime import timezone, timedelta, datetime def local_time(timestamp, dt_type=""): """ :param timestamp: 时间戳 :param dt_type: 是否要输出datetime类型的时间 :return: 格式化后的时间字符串 """ SHA_TZ = timezone( timedelta(hours=8), name='Asia/Shanghai', ) if timestamp: # 将时间戳转换为UTC时间 utc_datetime = datetime.utcfromtimestamp(timestamp).replace(tzinfo=timezone.utc) # 设置时区 dt = utc_datetime.astimezone(SHA_TZ).strftime('%Y-%m-%d %H:%M:%S') else: # 协调世界时 utc_now = datetime.utcnow().replace(tzinfo=timezone.utc) if dt_type: utc_now = utc_now.astimezone(SHA_TZ) return utc_now dt = utc_now.astimezone(SHA_TZ).strftime('%Y-%m-%d %H:%M:%S') return dt if __name__ == '__main__': print(unix_time("2023-07-02 13:57:00")) print(local_time(1688277420))
这里可以看到,时间相互转化是一致的.