Power Automate单条日期比较异常问题排查求助
我有一个图书租赁PowerApp,关联的Power Automate流里,针对SharePoint列表某条目的到期日(Due Date)判断出了问题。这个自动化需要在到期前7天、2天,到期后1天及之后每周一给未还书的用户发提醒,其他条目都正常,只有一条目不符合预期:
条件formatDateTime(utcNow(), 'MM/dd/yyyy') 大于 formatDateTime(addDays(item()?['DueDate'], 1), 'MM/dd/yyyy')被判定为true,但实际左侧是12/09/2024,右侧是01/01/2025,明明应该是false。把到期日改成2024年12月31日,结果还是一样。
问题根源
你用MM/dd/yyyy格式的字符串比较日期,Power Automate会按字符串字典序判断,而不是日期逻辑。比如"12/09/2024"和"01/01/2025",字符串比较时第一个字符"1"比"0"大,直接判定前者大于后者,完全不符合日期的实际先后关系。
解决方法
直接用日期对象或时间戳比较,别转成字符串:
方法1:直接比较原生日期值(推荐)
把条件改成无需格式化的日期比较:utcNow() 大于 addDays(item()?['DueDate'], 1)Power Automate会自动识别日期类型,按时间先后正确判断。
方法2:用时间戳
ticks()比较
如果需要保留格式展示,比较时转成时间戳(数字形式的日期标识):ticks(utcNow()) 大于 ticks(addDays(item()?['DueDate'], 1))时间戳是从固定起点到当前时间的毫秒数,数字比较逻辑完全贴合日期先后顺序。
额外提示
针对图书提醒场景,建议统一使用UTC时间,或者和SharePoint列表的时区保持一致,避免时区偏移导致的日期判断偏差。
内容的提问来源于stack exchange,提问作者Richárd Horváth

