影刀RPA新手教程_时间和日期处理完全指南格式转换时间计算与定时任务
影刀RPA新手教程:时间和日期处理完全指南——格式转换、时间计算与定时任务
影刀RPA时间日期处理是让新手头疼的细节。采集到的时间是"2026/06/11",Excel要的是"2026-06-11",判断是否过期还要做日期加减——这些操作怎么在影刀里优雅地实现?这篇说清楚。
作者:林焱 | 影刀RPA新手教程系列
影刀里获取当前时间
最基础的操作——获取当前时间:
使用「获取当前时间」指令 输出变量:current_time 格式选择:返回时间对象影刀的时间对象包含年、月、日、时、分、秒,可以单独取任意字段。
时间格式转换:3种常用场景
场景一:时间对象转格式化字符串
# 用「时间格式化」指令 输入:current_time(时间对象) 格式:YYYY-MM-DD HH:mm:ss 输出:time_str → "2026-06-11 14:30:25" # 常用格式模板: YYYY-MM-DD → 2026-06-11 YYYY/MM/DD → 2026/06/11 MM月DD日 → 06月11日 YYYYMMDD → 20260611(适合做文件名) YYYY-MM-DD HH:mm:ss → 完整时间戳场景二:字符串转时间对象
采集到的时间字符串,需要先转成时间对象才能做计算:
拼多多店群自动化上架方案
# 用「字符串转时间」指令 输入字符串:"2026/06/11 14:30" 格式:YYYY/MM/DD HH:mm 输出:time_obj(时间对象)格式模板必须和输入字符串完全匹配,差一个字符都会报错。
场景三:Python 方式处理(更灵活)
如果内置指令满足不了需求,用执行Python代码:
fromdatetimeimportdatetime# 字符串转时间对象time_str="2026年6月11日"dt=datetime.strptime(time_str,"%Y年%m月%d日")# 转为标准格式result=dt.strftime("%Y-%m-%d")# 输出:2026-06-11时间计算:加减天数、比较大小
计算多少天后的日期
fromdatetimeimportdatetime,timedelta# 30天后的日期today=datetime.now()future=today+timedelta(days=30)result=future.strftime("%Y-%m-%d")计算两个日期之间的天数
fromdatetimeimportdatetime date1=datetime.strptime("2026-06-01","%Y-%m-%d")date2=datetime.strptime("2026-06-11","%Y-%m-%d")diff=(date2-date1).days# 输出:10判断日期是否已过期
fromdatetimeimportdatetime expire_date=datetime.strptime("2026-06-10","%Y-%m-%d")today=datetime.now()iftoday>expire_date:print("已过期")else:days_left=(expire_date-today).daysprint(f"还有{days_left}天过期")实战场景一:商品上架时间监控
电商后台要监控商品上架超过30天未更新的记录,需要:
- 读取 Excel 里的上架时间列
- 和今天比较,计算距今天数
- 超过30天标红
fromdatetimeimportdatetime# 从Excel读取的时间字符串shelf_date_str=excel_row['上架时间']# 格式:2026-05-01shelf_date=datetime.strptime(shelf_date_str,"%Y-%m-%d")today=datetime.now()days_passed=(today-shelf_date).daysifdays_passed>30:# 标记为需要更新flag="需更新"else:flag="正常"实战场景二:生成带时间戳的文件名
每次运行流程生成报告,文件名要包含当天日期,避免覆盖:
fromdatetimeimportdatetime# 生成形如 采集报告_20260611_143025.xlsx 的文件名now=datetime.now()filename=f"采集报告_{now.strftime('%Y%m%d_%H%M%S')}.xlsx"实战场景三:按时间段过滤数据
只保留最近7天的数据:
fromdatetimeimportdatetime,timedelta seven_days_ago=datetime.now()-timedelta(days=7)# 遍历数据列表valid_data=[]foritemindata_list:item_date=datetime.strptime(item['date'],"%Y-%m-%d")ifitem_date>=seven_days_ago:valid_data.append(item)TEMU店群如何管理运营?
定时任务的时间判断
流程里判断当前是否在工作时间(9:00-18:00):
fromdatetimeimportdatetime now=datetime.now()current_hour=now.hour current_weekday=now.weekday()# 0=周一,6=周日# 工作日 9-18 点运行ifcurrent_weekday<5and9<=current_hour<18:# 执行主要任务passelse:# 记录日志,跳过本次执行pass常见报错速查
| 报错信息 | 原因 | 解决方法 |
|---|---|---|
time data does not match format | 格式模板和字符串不匹配 | 仔细对比格式模板 |
ValueError: unconverted data remains | 字符串有多余字符 | 先用 strip() 去掉空格和换行 |
AttributeError: 'str' object has no attribute 'year' | 对字符串调用了时间对象的方法 | 先转换成时间对象 |
| 时区不对(晚8小时) | 服务器是UTC时区 | 用datetime.now(),不要用datetime.utcnow() |
小结
时间日期处理的要点:
- 获取时间优先用影刀内置指令
- 格式转换记住:格式模板要和字符串完全匹配
- 时间计算用 Python timedelta,清晰易读
- 文件名里加时间戳,防止覆盖
掌握这些,时间相关的逻辑就不再是障碍。
内容标签:影刀RPA / 时间处理 / 日期格式转换 / Python datetime / 定时任务
作者:林焱
本文是「影刀RPA从零到实战」系列文章之一,持续更新实操技巧与避坑经验。
