You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python获取UTC UNIX纪元时间戳晚1小时的原因排查

问题

我需要在Python中获取UTC时区下的当前UNIX纪元时间戳,尝试了以下代码:

from datetime import datetime
from datetime import timezone
import time 
import calendar

def get_nonce():
    unix_epoch = datetime.utcfromtimestamp(0).replace(tzinfo=timezone.utc)

    now = datetime.now(tz=timezone.utc)

    seconds = (now - unix_epoch).total_seconds()

    return int(seconds)
    
def get_time():
    current_time_seconds = time.time()
    
    return int(current_time_seconds)
    
def get_time_utc():
    current_time_seconds = datetime.now(timezone.utc).timestamp() 
    
    return int(current_time_seconds)
    
def get_time_again():
    current_time = int(calendar.timegm(time.gmtime()))
    
    return int(current_time)
    
print(get_nonce())

print(get_time())

print(get_time_utc())

print(get_time_again())

但所有方法返回的时间戳都比我查询到的当前UNIX纪元时间晚1小时。time.tzname显示我的时区为UTC,且使用命令行date +%s返回的值同样晚约1小时。从昨天开始出现该问题,因对接的API要求请求体中包含当前纪元时间戳,导致开发进度受阻,请问可能的原因是什么?

分析与解决建议
  • 系统时钟偏移:既然date +%s也返回错误时间,说明问题不在Python代码,而是系统本地时钟出现了1小时偏差。UNIX时间戳基于UTC,系统时钟未正确同步时,所有依赖它的工具都会返回错误结果。
  • NTP同步失效:系统的NTP(网络时间协议)服务可能从昨天起停止工作,或无法连接时间服务器,导致时钟逐渐偏离正确UTC时间。
  • 时区配置隐性异常:虽然time.tzname显示为UTC,但系统底层时区配置可能被修改,导致计算时间时错误叠加了偏移量。
  • 硬件时钟故障:如果是物理机,主板CMOS电池没电可能导致硬件时钟走偏,系统启动后未同步到网络时间。

解决步骤:

  1. 手动同步时钟:Linux下执行sudo ntpdate pool.ntp.org或timedatectl set-ntp true重新开启同步;Windows可在系统设置中手动触发时间同步。
  2. 检查NTP服务状态:Linux下用systemctl status ntpd或systemctl status chronyd确认服务是否正常运行。
  3. 验证时区与时间:执行timedatectl(Linux)查看当前时区和UTC时间,确认与实际UTC时间一致。
  4. 检查硬件时钟:物理机可进入BIOS查看硬件时钟是否正确,若异常则调整,同时检查CMOS电池是否需更换。

内容的提问来源于stack exchange,提问作者neil_ruaro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 17:00:26