Python中计算两个指定格式日期时间的小时差值实现方法
Python计算两个指定格式日期的小时差
实现核心逻辑
你存储的日期是月/日/年 时:分:秒格式的字符串,没法直接做时间运算,第一步需要先把字符串解析为Python可识别的时间对象,再做差值换算。
方法1:原生Python实现(无第三方依赖)
适合单组日期计算的场景,直接用内置的datetime模块即可:
from datetime import datetime # 匹配你当前存储的日期格式:月/日/年 时:分:秒 DATE_PARSE_FORMAT = "%m/%d/%Y %H:%M:%S" # 示例日期数据 date1_str = "2/23/2022 12:30:26" date2_str = "2/24/2022 14:45:26" # 字符串转datetime时间对象 date1 = datetime.strptime(date1_str, DATE_PARSE_FORMAT) date2 = datetime.strptime(date2_str, DATE_PARSE_FORMAT) # 计算时间差,换算为小时(保留小数,包含分、秒的差值) time_delta = date2 - date1 diff_hours = time_delta.total_seconds() / 3600
如果只需要整数小时结果,可以根据需求用int()向下取整,或者round()做四舍五入。
方法2:Pandas批量实现(适合两列表格数据)
如果你说的两列数据是存储在数据表中,用pandas批量处理效率更高,不需要写循环:
import pandas as pd # 示例:构造测试数据表,实际使用时替换为你自己的数据读取逻辑 df = pd.DataFrame({ "date1": ["2/23/2022 12:30:26", "2/20/2022 9:15:00"], "date2": ["2/23/2022 15:30:26", "2/22/2022 10:15:00"] }) # 批量解析两列日期为时间类型 df["date1"] = pd.to_datetime(df["date1"], format="%m/%d/%Y %H:%M:%S") df["date2"] = pd.to_datetime(df["date2"], format="%m/%d/%Y %H:%M:%S") # 批量计算每行的小时差,结果存为新列 df["diff_hours"] = (df["date2"] - df["date1"]).dt.total_seconds() / 3600
注意事项
- 解析时务必确认格式匹配:你的日期是
月/日/年的顺序,不要和常见的日/月/年格式混淆,否则会出现解析错误或者结果偏差。 - 如果存在空值、非法格式的日期,需要提前做数据清洗,避免解析报错。
内容的提问来源于stack exchange,提问作者donald smith
相关产品推荐
相关产品推荐

