在Logic App中将时间设为00:00:00后添加小时变量失败,求解决思路
Logic App 时间处理问题解决方案
核心思路
要实现「指定DateTime清零时分秒→添加整数小时变量→格式化带时区偏移」的逻辑,直接用Logic App内置的startOfDay函数替代手动计算小时差即可。该函数能精准返回指定日期的当天00:00:00,避免手动计算带来的边界错误。
修正后的表达式
场景1:指定时间为自定义变量(如TargetDateTime)
formatDateTime(addHours(startOfDay(variables('TargetDateTime')), variables('Daytime')), concat('yyyy-MM-ddTHH:mm:ss', variables('DateTimeOffset')))
场景2:指定时间为当前UTC时间
formatDateTime(addHours(startOfDay(utcNow()), variables('Daytime')), concat('yyyy-MM-ddTHH:mm:ss', variables('DateTimeOffset')))
关键排查点
- 确认
Daytime变量为整数类型:如果是字符串格式,需用int()转换,比如addHours(..., int(variables('Daytime'))) - 检查
DateTimeOffset格式:必须是±HH:mm格式(如+08:00),否则会导致格式化失败 - 若指定时间是字符串格式:先通过
parseDateTime()转成DateTime类型,再传入startOfDay,比如startOfDay(parseDateTime(variables('TargetDateTimeStr')))
原表达式问题分析
原表达式用-utcNow().Hour + variables('Daytime')手动计算偏移,仅适用于当前时间场景,且手动计算容易因时区、跨天等边界情况出错,改用startOfDay能彻底规避这类问题。
内容的提问来源于stack exchange,提问作者MomoCodez
相关产品推荐
相关产品推荐

