时区代码到时区信息

2023-12-15

在我们的 MS Dynamics CRM 项目中,我们创建了一个海量用户上传批次。
该批处理从 Excel 文件读取并批量上传用户。
该批次需要设置的内容之一是时区代码。

在 Excel 文件中,时区将写为“UTC+1”
CRM 使用的代码似乎是 SQL 服务器正在使用的时区代码,可以找到here.

映射这些的最干净的方法是什么?
到目前为止我的想法:

  • 对转换存储进行硬编码
  • 以某种方式从 CRM 获取代码
  • 以某种方式从 SQL 获取代码

目前我们只是用硬编码值实现了我们自己的转换类。
有没有更好的办法?我们可以以某种方式利用 .net TimezoneInfo 类吗?

Update
为了获取所有 CRM 时区,我们执行了以下操作:

var colSet = new ColumnSet(true);
var query = new QueryExpression(TimeZoneDefinition.EntityLogicalName) { ColumnSet = colSet};
var timeZoneDefs = service.RetrieveMultiple(query).Entities.Select(tz => tz.ToEntity<TimeZoneDefinition>());

但似乎唯一填充的属性是 Id、Code、StandardName 和 UserInterfaceName。 似乎只有 UI 名称包含我们要查找的偏移量。

有什么方法可以确保加载 Bias 属性吗?


这是我用来获取用户的 TimeZoneInfo 的代码。它根据名称从 CRM 检索 TimeZoneDefinition,但我相信您可以通过与 excel 文件中的 UTC 偏移量匹配的偏差来查找它。

public static TimeZoneInfo GetUserTimeZone(IOrganizationService service, Guid userId)
{
    int timeZoneCode = 35; //default timezone to eastern just incase one doesnt exists for user
    var userSettings = service.Retrieve(UserSettings.EntityLogicalName, userId, new ColumnSet("timezonecode")).ToEntity<UserSettings>();

    if ((userSettings != null) && (userSettings.TimeZoneCode != null))
    {
        timeZoneCode = userSettings.TimeZoneCode.Value;
    }

    return GetTimeZone(service, timeZoneCode);
}

public static TimeZoneInfo GetTimeZone(IOrganizationService service, int crmTimeZoneCode)
{
    var qe = new QueryExpression(TimeZoneDefinition.EntityLogicalName);
    qe.ColumnSet = new ColumnSet("standardname");
    qe.Criteria.AddCondition("timezonecode", ConditionOperator.Equal, crmTimeZoneCode);
    return TimeZoneInfo.FindSystemTimeZoneById(service.RetrieveMultiple(qe).Entities.First().ToEntity<TimeZoneDefinition>().StandardName);
}

编辑 - 偏差为空

This could just be our on prem version of CRM, but this is what it is currently populated in CRM for any time zone that is -5, -6,-7, or -8. CRM TimeZoneDefinition.

这将使偏差查找无效。

顺便说一句,我们 99% 的用户都使用东部时间,但我们也有一些用户在加利福尼亚州,到目前为止我还没有听说任何问题。但现在我想知道我们是否愿意在 DST 之前和之后进行测试......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

时区代码到时区信息 的相关文章

随机推荐

  • 在 Bicep 模板上设置 Azure 应用服务服务器堆栈

    我正在尝试使用 Azure CLI 中的 Bicep 模板在 Linux 上部署 NET Core 3 1 Azure 应用服务 应用程序服务和相应的应用程序服务计划已正确部署 但 Azure 门户上的应用程序服务堆栈设置为空 我必须手动设
  • 当 WIFI 网络没有互联网连接时,.net 或 Xamarin 互联网可用性检查

    我知道如何检查设备是否有可用的互联网连接是一个大讨论 我尝试了 Ping WebClient 和 HTTPClient 我还使用 Xamarin Essentials 和连接插件 所有这些事情都有效 只需向谷歌或您选择的服务器发出请求 您就
  • Android:Vimeo 视频无法在 webview 中播放

    我必须在 webview 中播放 vimeo 视频 请考虑以下代码 当我播放它时 它只播放音频 但视频是黑色的 我正在使用下面的代码 WebSettings s wv getSettings wv setWebChromeClient ne
  • 有没有办法去掉重音符号并将整个字符串转换为常规字母?

    除了使用之外 是否有更好的方法来消除重音并使这些字母变得规则String replaceAll 方法并一一替换字母 例子 Input or p s d Output orcpzsiayd 它不需要包含所有带有重音符号的字母 例如俄语字母表或
  • C# 中字符串的第一个单词

    如何获取字符串的第一个单词 string test hello world I used test Split FirstOrDefault 但它返回 hello 我可以尝试将分隔符添加为逗号 但即使有逗号或空格 我也只需要单词 hello
  • 如何使用 GNU GAS 或 LLVM 汇编 ARM SVE 指令并在 QEMU 上运行?

    我想玩新的ARM SVE指令使用开源工具 首先 我想组装一个最小的示例 https developer arm com docs dui0965 latest getting started with the sve compiler as
  • Tesseract + opencv 3.0 + windows,文本模块尺寸小,链接错误

    我两天前在answers opencv org 上发布了这篇文章 现在我也将其发布在这里 http answers opencv org question 68634 text contrib module and tesseract 大家
  • 将窗口对象存储在本地存储中

    我需要能够保留窗口对象 我尝试对窗口对象进行字符串化 但在尝试将窗口对象转换为 JSON 时收到错误 将循环结构转换为 JSON 错误 无论如何 我可以将 window open 中的窗口对象存储在本地存储中吗 var myWindow w
  • 将列附加到 pandas 数据框

    这可能很简单 但我有以下数据 在数据框 1 中 index dat1 0 9 1 5 在数据框 2 中 index dat2 0 7 1 6 我想要一个具有以下形式的数据框 index dat1 dat2 0 9 7 1 5 6 我尝试过使
  • 在 C++ 中创建稀疏数组的最佳方法是什么?

    我正在研究一个需要操作巨大矩阵的项目 特别是用于连接计算的金字塔求和 简而言之 我需要跟踪矩阵 多维数组 中大量零的相对少量的值 通常为 1 在极少数情况下超过 1 稀疏数组允许用户存储少量值 并假设所有未定义的记录都是预设值 由于物理上不
  • PHP 显示中文字符:SET NAMES 'utf8' 不起作用

    我正在尝试使用我拥有的数据库 但无法在其中显示中文字符 数据库实际上首先是一个 MS Access 文件 我用程序将其转换为 mysql 无论如何 很多行中都有中文字符 我无法让它们在任何浏览器中正确显示 否则我可以很好地显示汉字 如果我使
  • 配置旁遮普向 Openfire 发送 xmpp 请求

    我正在尝试将旁遮普连接管理器与 Openfire 一起使用 我已经有一个正在运行的 Openfire 服务器 我还安装了 punjab 并且服务器正常启动 允许我导航到本地主机上的端口 5280 虽然http localhost 5280
  • 将整数和文本字符串等数据从手机发送到网络数据库

    我有一个项目 我应该将整数 浮点数和文本字符串等数据从 Android 应用程序发送到 Web 数据库 但是我不知道如何做到这一点 有人可以解释一下吗 任何建议或帮助将不胜感激 您需要编写一些服务器端逻辑 通过POST或GET方法接受参数k
  • 使用角度2中的viewchild更新元素的innerhtml

    我有像这样的html元素 section class span title span span class value span section 我使用访问组件中的元素 ViewChild hiddenElement hiddenEleme
  • 在 ftp 服务器中不递归地列出文件、目录、子文件和子目录的想法

    我正在尝试生成 ftp 服务器中给定目录及其子目录的文件列表 服务器工作正常 我已经成功地生成了当前目录的文件列表 当我尝试列出子目录及其文件时 事情就变得复杂了 我被要求不要使用递归算法 所以我自己做了一些研究 我尝试过使用线程 对于找到
  • FutureTask 获取与运行,任务永远不会完成

    我正在学习 Callables 并决定制作一个非常简单的程序 问题是当我调用 getFutureTask 时线程被阻塞 Thread State TIMED WAITING 在对象监视器上 您能否告诉我为什么会这样以及为什么当我在 futu
  • 替换字符串中字符的实例

    这个简单地尝试用冒号替换分号 在特定位置 的简单代码不起作用 for i in range 0 len line if line i and i in rightindexarray line i 它给出了错误 line i TypeErr
  • 当“OrdinalBase”字段设置为 1 时,“kernel32.dll”如何导出序数 0?

    查看加载到内存中的 kernel32 dll 我看到以下导出序数表 gdb x 400hd eax 0x776334b0
  • 通过 shell 脚本拒绝 cat 的权限[重复]

    这个问题在这里已经有答案了 我在 bin rclone sync ACD log 中的日志文件上的 shell 脚本中运行 cat 时遇到问题 这是 shell 脚本中的行 RESULT cat LOGFILE tail 1 但是当运行脚本
  • 时区代码到时区信息

    在我们的 MS Dynamics CRM 项目中 我们创建了一个海量用户上传批次 该批处理从 Excel 文件读取并批量上传用户 该批次需要设置的内容之一是时区代码 在 Excel 文件中 时区将写为 UTC 1 CRM 使用的代码似乎是