排查 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 或画布应用)可以向前或向后移动日期一天。

若要解决此问题,请显示值的时间组件并 检查时区调整设置

窗体显示列的时间选取器,即使其格式为“仅日期”

对于时区独立和用户本地调整行为(始终具有时间组件)可能会出现此问题。 如果将此类列添加到窗体,该窗体将假定还需要一段时间。

如果不希望用户查看或编辑值的时间组件,

  • 删除时间选取器。

  • 对于 不需要时区调整的用户本地 列,请将调整行为更改为 “仅日期”。

    注意

    这不同于 “仅 日期”格式。 这是一项永久更改,无法撤消。 以前调整时区列的其他应用、插件或工作流可能无法正常工作。

另请参阅

Dataverse 日期和时间列的行为和格式