dify工作流需通过自定义python代码实现时区差值运算,因原生不支持;必须补全数值型tz_offset字段(如东京填8、伦敦填0),将原始时间统一转为utc时间戳后,用代码块计算两时区本地时间的秒级/小时级差值。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要让Dify工作流自动处理全球不同时区的业务数据,比如把东京时间14:00的订单量,按北京时间(UTC+8)与伦敦时间(UTC+0)的时差做数值差值换算,而非简单转换时间戳——Dify原生不支持时区差值运算,必须通过自定义逻辑嵌入外部服务或规则引擎实现。
确认业务数据中的时区标识字段
打开Dify知识库或数据集配置页,检查原始业务数据是否包含明确的时区字段(如timezone、tz_offset、location_code)。若只有时间字符串(如"2024-06-15T14:30:00"),【必须补全时区信息,否则后续所有差值计算结果为零或错误】。
若数据来自CSV上传,在预处理阶段用Excel或Python脚本添加一列tz_offset,填入数值型偏移量(例如东京填8,伦敦填0,纽约填-4);Dify不解析IANA时区名(如Asia/Tokyo),只认数字偏移。
在Dify工作流中接入时区差值计算节点
进入工作流编辑器,拖入一个「代码块」节点(Code Node),语言选Python 3.11。
粘贴以下逻辑代码:
import json
inputs = json.loads($inputs)
utc_time = inputs.get("utc_timestamp") # 假设你已将原始时间统一转为UTC秒级时间戳
offset_a = inputs.get("tz_offset_a", 0)
offset_b = inputs.get("tz_offset_b", 0)
result_diff = (utc_time + offset_b * 3600) - (utc_time + offset_a * 3600)
$outputs = {"diff_seconds": result_diff, "diff_hours": result_diff / 3600}
注意:此代码要求上游节点已提供utc_timestamp(单位:秒),不是字符串。若原始数据是字符串,请先用另一个代码块调用datetime.fromisoformat().timestamp()转换。
配置差值触发条件与下游分流
第一步:在「条件分支」节点中设置判断路径,例如当diff_hours > 0时走“正向时差”分支,
第二步:在“正向时差”分支后接「HTTP请求」节点,URL填写你部署的业务指标归一化API(如https://api.yourcompany.com/v1/adjust?delta={diff_hours}),Method选POST,Body传JSON:{"raw_value": {{previous_node.output.value}}, "unit": "orders_per_hour"}。
第三步:确保该HTTP节点的「超时时间」设为8000毫秒以上——跨时区数据对齐常涉及海外API,响应延迟高,低于5000毫秒易触发失败重试,导致重复提交。











