【问题标题】:Strategy for location and datetime to calculate the timezone inc handling DST用于计算时区 inc 处理 DST 的位置和日期时间策略
【发布时间】:2021-01-29 11:28:36
【问题描述】:

好的,我有一个问题,我希望用户界面输入地球上任意位置的日期/时间。基本上我可以在我的系统中放入一些位置信息,以便我计算那个“地方”的时区。我希望我的 UI 显示在该位置的相关时区设置中输入的日期时间指定日期

是否有 .NET API 用于计算指定日期时间某个位置的时区?我不想要 当前 时区。我想要 指定的 DateTime 的时区。

例如在澳大利亚 AEDST,在悉尼,TZ 今天是 +11GMT。 3 个月前是澳大利亚东部标准时间,即 +10GMT。如果有人在 15/07/2020 09:00:00 中输入日期时间,我希望控件显示确切的日期时间,但我将存储 15/07/2020 09:00:00+10:00。如何确定当时悉尼的时区?

编辑:解决方案需要离线

【问题讨论】:

标签: c# timezone-offset


【解决方案1】:

解决方案工作流程:

  1. 根据资源存储 IANA tz 名称,例如“澳大利亚/悉尼”

  2. 让日期控件针对该资源指定交易记录(例如,使用标准 DateTime 控件)。为了论证起见,假设指定了 13/12/2020 (dd/MM/yyyy)。这将是 AEDST 的 +11GMT。需要离线计算如何从 "13/12/2020" + "Australia/Sydney" => 在 DateTimeOffset 字段中存储 "2020-12-13T00:00:00+11:00" 获取。

使用

TimeZoneInfo tzi = TZConvert.GetTimeZoneInfo("Australia/Sydney");

获取时区信息。

然后对于任意日期,计算偏移量

TimeSpan offsetTest = tzi.GetUtcOffset(new DateTime(2020, 7, 1));

设计的最终组成部分将是 DST 转换的模棱两可的时间段。我可能会为 GetUtcOffset 选择任意有效结果,然后进行编辑,如果仍然模棱两可,则保留以前的偏移量。

【讨论】:

猜你喜欢
  • 2017-02-08
  • 2015-02-14
  • 2012-07-18
  • 1970-01-01
  • 1970-01-01
  • 2016-02-02
  • 2019-01-08
  • 2015-11-07
  • 2017-05-02
相关资源
最近更新 更多