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

Windows下Python3计算os.path.getctime与JSON内置时间的时间差

可行实现方案

核心思路

两个时间统一转换为带UTC时区信息的datetime对象,或者统一转换为秒级UNIX时间戳(数值型),直接相减即可得到时间差,禁止转换为字符串做运算。

分步实现

1. 处理JSON内的startTime时间

优先使用已经提供的utcTimestamp字段,避免解析date、time字符串可能出现的时区问题:

  • 先判断字段单位:如果utcTimestamp是13位数字就是毫秒级,除以1000转成秒级;如果是10位就是秒级直接用
  • 转成UTC时区的datetime对象示例:
from datetime import datetime, timezone

# 假设你从JSON里拿到的utcTimestamp存在变量json_utc_ts里
json_ts = int(json_utc_ts)
# 13位毫秒转秒
if len(str(json_ts)) == 13:
    json_ts = json_ts / 1000
json_time = datetime.fromtimestamp(json_ts, tz=timezone.utc)

2. 处理JSON文件的创建时间戳

Windows下os.path.getctime返回的是秒级时间戳,同样转成UTC时区的datetime对象,消除本地时区影响:

import os

file_ctime = os.path.getctime(fname)
file_time = datetime.fromtimestamp(file_ctime, tz=timezone.utc)

3. 计算时间差

两个带UTC时区的datetime对象直接相减,得到timedelta类型的结果,可以按需提取秒、分钟、天等单位:

time_delta = file_time - json_time
# 常用属性示例
print(f"总秒差:{time_delta.total_seconds()}")
print(f"天差:{time_delta.days}")
print(f"小时差:{time_delta.total_seconds() / 3600}")

常见问题排查

  • 如果JSON里的utcTimestamp不可用,需要解析date、time字段的话,要先确认这两个字段对应的时区,转成UTC时间戳后再做后续计算
  • 不要省略tz=timezone.utc参数,否则会默认用系统本地时区,导致两个时间时区不匹配出现计算误差

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:15:06