Power Automate中的utcNow使用的日期(`dd`)不正确



我在按计划运行Flows时遇到了时区问题,似乎找不到解决方案。

我的时区目前是UTC的+10:00——澳大利亚悉尼。

为了简化起见,我在06:00(当地时间早上6点(和12:00(当地时间下午12点(运行了一个重现触发器。

当我运行Actions(任何需要StartTimeEndTime的操作(时,我会传入以下参数:

开始时间 结束时间
formatDateTime(utcNow(), 'yyyy-MM-dd"T"22:00:00.0000000Z') formatDateTime( addDays(utcNow(), 1), 'yyyy-MM-dd"T"08:00:00.0000000Z')

您是否尝试过使用addHours函数而不是在formatdatetime函数中对小时进行硬编码?

对于早上6点的跑步,我会尝试的开始时间

formatDateTime(addHours(utcNow(), 2), 'yyyy-MM-ddTHH:mm:ss.0000000Z')

对于结束时间

formatDateTime(addHours(utcNow(), 12), 'yyyy-MM-ddTHH:mm:ss.0000000Z')

您也可以使用检查来查看哪一次运行是与addhours方法的组合。

equals(utcNow('HH'), '20')

看起来,您想根据您的本地日期进行开始时间和结束时间计算,但您是根据UTC日期进行计算的,因此如果勾选了UTC,则会得到错误的日期。

我想解决方案是,根据LOCAL时间而不是utcNow((来计算开始和结束时间,然后将生成的LOCAL开始和结束时刻转换为UTC时间,用作开始时间和结束时间参数。

某种效果:

convertFromUtc(utcNow(),'+10:00','yyyy-MM-dd"T"06:00:00.000000')

获取当天的本地开始时间,然后从那里

convertToUtc(localStartTime,'+10:00')

以获取UTC开始时间与正确的日期。

《终结时间》也是如此。

尽管其他解决方案的工作方式似乎合乎逻辑,但它们没有考虑夏令时和其他日期时间问题。

对于解决方案,我最终对一些数据和计算进行了硬编码:

  1. 操作:";转换时区";

    1. 基准时间:触发时间
    2. 格式字符串:Universal sortable date/time pattern [u]
    3. 来源:+10:00
    4. 目的地:UTC
  2. 动作:";撰写";

    1. 表达式:formatDateTime( body('Convert_time_zone'), 'dd')

然后开始时间UTC:

  1. 操作:初始化变量

    1. 名称:输出开始日期时间
    2. 类型:字符串
    3. 值:yyyy-MM-[合成输出*]";T";22:00:000000000 z'(

    *,因为[Output from Compose]我把它作为一个表达式,所以我可以减去1天,使用:sub( int(outputs('Compose')), 1)


通过这种方式,我可以始终获取本地日期(dd(,然后手动更改日期,并设置它以及开始时间。

然后,我将使用该本地日期作为结束日期时间,并手动设置时间。

不是最干净的解决方案,但无论夏令时或任何时间转换,它都能100%工作。但是,在其他用户未编辑信息的情况下,无法将其传输给其他用户。

相关内容

  • 没有找到相关文章

最新更新