排查 Power Apps 画布应用中的日期和时间问题
当日期和时间值在一天或几个小时前关闭时,它可能是由时区或夏令时调整引起的。 本文提供了排查以下问题的提示:
- “ 日期和时间” 字段显示 UTC 而不是本地时间,反之亦然。
- “ 仅日期” 值显示某些用户和时区的错误日期。
- 输入夏令时转换日期会导致日期关闭一天或关闭一小时。
确定这是服务器还是客户端问题
画布应用是 Web 应用。 它们从云服务 (服务器) 获取数据。 相同的数据可以支持多个应用 (客户端) 。 服务器或客户端上可能发生错误。
如果数据源中的日期和时间值出乎意料,则它可能会在所有位置(而不仅仅是画布应用中)出现错误。 因此,验证存储值是重要的第一步。
检查是否在服务器上存储了正确的值
日期和时间值通常存储为 UTC。 对于 Dataverse 表,可以使用 Web API 查询查看原始日期和时间值。 有关 Microsoft 列表或 Excel 等其他数据源,请参阅其各自的文档。
检查数据源和日期选取器控件的时区调整设置
某些数据源已针对时区进行了调整。 此外, 日期选取器控件 还可以使用其 DateTimeZone 属性调整时区。
一个常见错误是数据源和控制设置不匹配。 例如,如果 Dataverse 表列独立于 时区,但日期选取器 DateTimeZone 设置为 Local,则服务器的 UTC 值将根据用户的时区显示。 反之亦然。 当 DateTimeZone 设置为 UTC 时,Dataverse 中的 User Local 值将显示为 UTC。
请注意,模型驱动应用不会发生这种潜在冲突,因为无法为单个控件自定义时区处理。
尝试其他时区
若要了解时区和夏令时调整是否会导致意外值,请尝试更改用户的时区。
画布应用使用系统时区。 有关如何更改它的信息,请参阅 Windows、Android、iOS 或 macOS 中的相应文档。
显示用户的时区
可以使用 TimeZoneOffset 函数验证用户的时区。 它提供 UTC 与用户时区之间的分钟数。 例如,如果用户位于太平洋标准时间,它将返回 480。 这与日期选取器控件和 Power Fx 用于调整时区和夏令时的偏移量相同。
使用此偏移量,可以计算是否已正确调整日期和时间值。
将“仅日期”格式更改为“日期和时间”
如果仅日期值在一天内关闭,则显示时间部分以了解时区调整是否可能是原因很有帮助。
不要使用 2 位数年份
2 位数年份不明确。 例如,40 可能表示 1940、2040 或 2140。 系统如何解释 2 位数年份可能会而且可能会随时间而变化。
如果未显示完整的日期和时间值,也很难调查。 出于这些原因,强烈建议使用 4 位数年份,尤其是在输入日期时。
Dataverse 日期和时间列的常见问题
“仅日期”列为某些用户显示错误的日期
对于时区 无关和用户本地调整行为(始终具有时间组件),可能会出现此问题。 按 Dataverse 或画布应用进行的时区调整可以向前或向后移动日期一天。
若要解决此问题,请显示值的时间部分以及时区调整设置检查。
窗体显示列的时间选取器,即使其格式为“仅日期”
对于时区 无关和用户本地调整行为(始终具有时间组件),可能会出现此问题。 如果将此类列添加到窗体,该窗体将假定你还需要一段时间。
如果不希望用户查看或编辑值的时间部分,
删除时间选取器。
对于不需要调整时区 的用户本地 列,将其调整行为更改为 “仅限日期”。
注意
这与 “仅日期” 格式不同。 这是永久性更改,无法撤消。 以前调整时区列的其他应用、插件或工作流可能无法正常工作。