【问题标题】:Microsoft CRM Online - LINQ query when comparing date to local dateMicrosoft CRM Online - 将日期与本地日期进行比较时的 LINQ 查询
【发布时间】:2014-12-29 08:19:47
【问题描述】:

我正在为我正在处理的项目使用 Microsoft CRM Online SDK。其中一部分是开发一个移动应用程序,该应用程序使用 LINQ 进行查询以向 Web 应用程序显示数据。

var InspectionSchedule = xrm.new_inspectionsSet
              .Where(i => i.new_InspectionDate.Equals(System.DateTime.UtcNow));   

Web 应用程序将在与其用户相同的时区运行,即澳大利亚 QLD 时间。 Microsoft CRM SDK 将日期时间提取为 UTC,而我的时区提前 10 小时。

我要做的是查询 CRM 实体(检查)并转换为我的本地时区,然后查询今天要显示的记录(在澳大利亚时区)。

关于我如何转换为 DD/MM/YYYY 的任何想法 - 在同一时区(即,来自 CRM 的 UTC 日期已转换并与本地日期时间进行比较)。

【问题讨论】:

  • 我不明白你的问题。要将 UTC 日期时间转换为本地时间并以 dd/MM/yyyy 格式显示?
  • 嗨。对,那是正确的。因为我需要将 CRM 的日期与我的本地服务器进行比较。基本上,我想列出当天要显示的所有检查。

标签: c# linq datetime dynamics-crm-2013 dynamics-crm-online


【解决方案1】:

您可以使用 .ToLocalTime() 和 .ToUniversalTime() 在 UTC 和本地之间轻松转换。这在您的应用程序在目标时区运行时有效。

您need to be careful when using these functions around the moment your timezone changes between Summer and Winter time(如果您的时区遵循夏令时规则)。在当地时区中,一天中的某些时间可能不明确(例如,凌晨 3 点出现两次)。

如果您想更好地控制转换,可以使用TimeZone class 将源时区转换为 UTC,然后再转换为目标时区。

有一个whole doc on MSDN which covers timezone and UTC conversions in depth,我是recommend you read it all。

【讨论】:

    【解决方案2】:

    crm 在线有点棘手我发现了同样的问题,基本上从在线组织你看不到时区。我也来自澳大利亚,我有一个 linq 查询来比较日期,我遇到了同样的问题。 linq 查询以 UTC 格式获取日期,但我无法正确转换它们。

    假设我需要检查本月的第一天(澳大利亚时间 UTC+10)。如果我通过 UI 保存日期并且我在数据库中保存了当月的 1 日将是:

    2014 年 12 月 31 日下午 02:00:00(UTC +0)

    代替:

    2015 年 1 月 1 日上午 12:00:00(UTC +10)

    但是当我进行比较时,linq 查询正在选择 UTC 日期,而我无法从在线 crm 获取正确的时区。如果我尝试使用 DateTime 类恢复时区,我会得到空的。我发现的唯一方法是将 UTC 日期静态移动一天,以便正确查询系统(对我来说并不重要,因为日期始终是本月的 1 日)

    抱歉,我忘记了回复,在您的情况下,您正在比较日期时间(可能在 crm 中设置和 dd/MM/yyyy 与日期时间 dd/MM/yyyy HH:mm:ss tt。您的 linq 操作查询是正确的,但也许你不应该使用等号。 我的意思是,用户在明天上午 8:00(例如现在是晚上 9:00)将罗马的约会保存在罗马时间(UTC +1)。在数据库中,这将保存为明天上午 7:00,现在来自澳大利亚(UTC +10)的用户需要知道他们是否有约会(现在是澳大利亚上午 11:00,UTC 上午 1:00),他们只需要当天的过滤器,因为无论澳大利亚人在 crm 上做什么,他们都会看到(UTC 上午 7 点,悉尼时间下午 17:00)。总之,过滤器应该可以正常工作,只有在您进行插入操作时,您才需要记住将数据作为 UTC 而不是本地时间推送到 CRM,否则 crm 将根据您的用户时区移动时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-08
      • 1970-01-01
      • 2014-08-01
      • 1970-01-01
      • 2014-05-03
      • 1970-01-01
      • 2017-02-02
      • 1970-01-01
      相关资源
      最近更新 更多