【问题标题】:How to get time adjusted to user timezone in Sitecore CMS如何在 Sitecore CMS 中根据用户时区调整时间
【发布时间】:2014-12-18 13:51:47
【问题描述】:

我正在使用自定义命令为 Sitecore 中新创建的项目导入数据。由于有很多数据导入,这个过程是在后台进行的。完成后,我会发送一封包含导入状态的电子邮件。我能够从 UserProfile 收到电子邮件:

User currentUser = Sitecore.Context.User;
UserProfile currentProfile = currentUser.Profile;

问题是我们在电子邮件中有导入开始时间。由于我没有找到存储用户时区的位置,因此无法调整它以匹配用户时区。

您是否知道是否有任何设置可以从 C# 代码中定义用户时区?

附:在右下角有一个为当前用户调整的正确时间,但我没有找到任何关于它的存储方式和位置的信息

【问题讨论】:

    标签: timezone sitecore


    【解决方案1】:

    我不确定它是否已存储(实际上我相信 Sitecore 存储的 DateTime 是相对于 CM 服务器而不是客户端)。

    要为访客/客户提供准确的时区,您需要直接询问(注册提示或用户配置文件选项)或使用来自原始 IP 的地理数据(尽管使用 VPN 和公共接入点变得越来越不可靠)。

    我的建议是以 UTC 格式存储开始时间,并(如有必要)让用户知道它是在那个时间开始的。如果需要经过时间,请在发送电子邮件之前执行计算——因为无论如何开始时间和结束时间都是相对于服务器的,只要让他们知道它需要“5 分钟 30 秒”才能完成。如果他们在下午 5:08(电子邮件时间戳)收到电子邮件,他们可以做一些简单的匹配并假设它是在 5:03(或左右)开始的。

    【讨论】:

      【解决方案2】:

      我相信桌面右下角的时间使用的是用户本地系统时间(很可能使用 JavaScript),因此它不依赖于他们的 Sitecore 用户配置文件。

      似乎没有针对用户个人资料存储任何时区信息,您可以获得的最佳信息是基于 Regional ISO Code 的 CultureInfo,尽管对于具有多个时区的国家/地区(美国、加拿大、俄罗斯、澳大利亚等)。

      您可以扩展 User Profile to add custom properties 并存储时区字段,但默认情况下不可用。

      我的建议是以 UTC 时间列出开始时间,并让用户在心理上适应自己的时区。这是我之前所做的,尤其是因为服务器本身可以位于任何位置。

      【讨论】:

        猜你喜欢
        • 2014-04-09
        • 1970-01-01
        • 2014-04-30
        • 2015-03-18
        • 2023-04-09
        • 2012-01-09
        • 2020-05-24
        • 2013-02-15
        • 2015-01-16
        相关资源
        最近更新 更多