You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power Automate中utcNow日期错误:时区导致日期偏移求助

解决Power Automate悉尼时区定时流的跨天日期计算问题

核心思路是先锁定悉尼本地的当前日期,再基于该日期生成对应工作时段的UTC时间,彻底避免UTC跨天带来的计算偏差。

具体实现步骤

1. 获取悉尼本地当前日期

使用convertFromUtc函数将UTC时间转换为悉尼时区的日期字符串,确保拿到的是触发时刻对应的本地日期:

convertFromUtc(utcNow(), 'Australia/Sydney', 'yyyy-MM-dd')

2. 构造工作时段的UTC时间表达式

基于本地日期,拼接悉尼时间8:00和18:00,再转换为UTC格式的时间字符串,作为StartTime和EndTime的参数:

  • StartTime(悉尼当天8:00对应的UTC时间):
formatDateTime(convertTimeZone(concat(convertFromUtc(utcNow(), 'Australia/Sydney', 'yyyy-MM-dd'), 'T08:00:00'), 'Australia/Sydney', 'UTC'), 'yyyy-MM-dd"T"HH:mm:ss.fffffffZ')
  • EndTime(悉尼当天18:00对应的UTC时间):
formatDateTime(convertTimeZone(concat(convertFromUtc(utcNow(), 'Australia/Sydney', 'yyyy-MM-dd'), 'T18:00:00'), 'Australia/Sydney', 'UTC'), 'yyyy-MM-dd"T"HH:mm:ss.fffffffZ')

简化写法(推荐)

为了避免重复计算本地日期,可以先将其存入变量:

  1. 添加「初始化变量」动作,变量名设为LocalDate,类型为字符串,值填入:
convertFromUtc(utcNow(), 'Australia/Sydney', 'yyyy-MM-dd')
  1. 后续直接调用变量生成时间:
    • StartTime:
    formatDateTime(convertTimeZone(concat(variables('LocalDate'), 'T08:00:00'), 'Australia/Sydney', 'UTC'), 'yyyy-MM-dd"T"HH:mm:ss.fffffffZ')
    
    • EndTime:
    formatDateTime(convertTimeZone(concat(variables('LocalDate'), 'T18:00:00'), 'Australia/Sydney', 'UTC'), 'yyyy-MM-dd"T"HH:mm:ss.fffffffZ')
    

为什么这能解决问题?

不管触发时刻的UTC时间是前一天还是当天,convertFromUtc都会返回悉尼本地的当前日期,后续拼接的8:00和18:00始终属于本地当天,转换为UTC后自然不会出现EndTime跳转到次日的错误。

内容的提问来源于stack exchange,提问作者markb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 04:05:13