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