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

Python中不同日期格式时间差计算及UTC格式转换问题

解决不同格式日期的小时差计算问题

没问题,我来帮你搞定这个日期格式转换和小时差计算的需求!其实pandas对UTC格式的日期解析很友好,不用手动拆分字符串,几步就能完成转换和计算:

核心思路

  1. 把两列日期统一转换成datetime类型:
    • 对于datecolA的日/月/年 时间格式,用dayfirst=True确保解析时不会搞混日期和月份;
    • 对于datecolB的UTC格式(如2018-12-02T11:32:00.000Z),pandas可以直接识别这种ISO 8601标准格式,无需额外处理。
  2. 计算两个datetime对象的差值,再转换为小时数。

完整代码示例

import pandas as pd
import numpy as np

# 模拟你的数据
df = pd.DataFrame({
    'datecolA': ['29/06/2020 08:30:00']*4,
    'datecolB': [
        '2018-12-02T11:32:00.000Z',
        '2018-12-04T14:00:00.000Z',
        '2017-02-02T14:36:00.000Z',
        '2017-02-02T14:36:00.000Z'
    ]
})

# 转换为datetime类型
df['datecolA'] = pd.to_datetime(df['datecolA'], dayfirst=True)
df['datecolB'] = pd.to_datetime(df['datecolB'])

# 计算时间差并转为小时
df['timebetween'] = (df['datecolA'] - df['datecolB']) / np.timedelta64(1, 'h')

# 可选:把UTC格式转成日/月/年的显示格式(仅用于可视化,不影响计算)
df['datecolB_formatted'] = df['datecolB'].dt.strftime('%d/%m/%Y %H:%M:%S')

print(df)

关键细节说明

  • UTC格式解析:pd.to_datetime默认支持ISO 8601格式,2018-12-02T11:32:00.000Z会被直接转换成带UTC时区的datetime对象,要是需要明确指定时区,可以加utc=True参数。
  • 时区一致性(可选):如果datecolA是本地时间,而datecolB是UTC时间,记得先把两者统一到同一时区再计算,比如假设datecolA是东八区时间:
    df['datecolA'] = pd.to_datetime(df['datecolA'], dayfirst=True).dt.tz_localize('Asia/Shanghai').dt.tz_convert('UTC')
    
  • 小时数结果:timebetween列会是浮点数,包含小数部分(比如不足1小时的分钟数会转换成0.x小时),如果需要整数可以用round()或astype(int)处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 10:37:32