Robot Framework计算日期时间差(转分钟)报错求助
问题分析
你的脚本报错核心原因有三点:
- 手动拼接日期和时间时未添加分隔空格,导致生成的日期时间字符串格式无效(例如变成
12/25/2303:36:00 PM这种无空格分隔的错误格式) - 使用
Subtract Date From Date时未指定date_format参数,该关键字默认用%Y-%m-%d %H:%M:%S.%f格式解析输入,但你的输入是m/d/yy h:m:s %p格式,导致解析混乱,生成了1225-23-10这种无效日期 Convert Time To Seconds返回的是秒数,你直接将其当作分钟输出,逻辑错误
正确实现方案
以下两种方法都可以实现需求,选其一即可:
方法一:使用Subtract Date From Date正确解析日期
*** Test Cases *** GetDateAndTimeDifference # 获取当前日期时间,格式与目标日期统一为'm/d/yy h:m:s PM/AM' ${current_datetime} = Get Current Date result_format=%m/%d/%y %I:%M:%S %p Log To Console 当前日期时间: ${current_datetime} # 定义目标日期时间(格式需与当前时间一致) ${target_datetime} = Set Variable 11/10/19 11:11:11 PM Log To Console 目标日期时间: ${target_datetime} # 计算日期差,必须指定date_format匹配输入格式 ${time_diff} = Subtract Date From Date ${current_datetime} ${target_datetime} date_format=%m/%d/%y %I:%M:%S %p Log To Console 时间差对象: ${time_diff} # 将时间差转成秒数,再计算为分钟 ${total_seconds} = Convert Time To Seconds ${time_diff} ${total_minutes} = Evaluate ${total_seconds} / 60 Log To Console 差值(分钟): ${total_minutes}
方法二:用时间戳差值计算(更简洁)
*** Test Cases *** GetDateAndTimeDifference_Alternative # 获取当前时间戳(单位:秒) ${current_ts} = Get Current Date result_format=%s # 将目标日期转成时间戳,指定输入格式 ${target_ts} = Convert Date 11/10/19 11:11:11 PM input_format=%m/%d/%y %I:%M:%S %p result_format=%s # 计算秒数差值,转成分钟(abs确保差值为正) ${diff_seconds} = Evaluate abs(${current_ts} - ${target_ts}) ${diff_minutes} = Evaluate ${diff_seconds} / 60 Log To Console 差值(分钟): ${diff_minutes}
关键注意点
- 所有日期字符串的格式必须统一,且在使用日期关键字时明确指定
date_format(或input_format)参数 - 时间差计算后,需根据需求转换单位(秒转分钟需除以60)
内容的提问来源于stack exchange,提问作者Balaji211
相关产品推荐
相关产品推荐

