【发布时间】:2016-10-09 06:40:00
【问题描述】:
我正在开发一个日程安排网站,您可以在其中指定日期、时间、时区城市。我想在 UTC 时间将其保存在后端。所以我必须在服务器上以某种方式转换它。我还想提供即时转换到不同时区的能力。
在 Javascript 中,我有一个日期/时间值以及一个时区城市(来自http://www.citytimezones.info,它给了我地理坐标)。我没有UTC时间,只有指定时区的时间。
现在我需要将这个未来的本地时间转换为 UTC。当然,它必须考虑到那时将应用的夏令时偏移量。
此外,我想使用第二个时区城市转换为不同的当地时间。
我曾考虑使用 Google Maps Time Zone API,但这会迫使您输入 UTC 时间,而我没有,因为我正在尝试计算它。
换句话说,理想情况下,我需要一个可以采用这些参数的系统:
- 未来时间/日期
- 源时区城市坐标
- 目标时区城市坐标(或 null = UTC 时间)
并将返回转换后的时间。
知道我能做些什么来实现这一点吗?
这可以是 Web 服务或 Windows C# 库。
【问题讨论】:
-
如果将来时区规则发生变化,那么您未来的 UTC 时间可能会变得不正确。时区规则经常变化惊人。显然,这个问题适用于所有多时区调度应用程序,我认为唯一的解决方案是存储原始本地时间,以便在将来适用的时区规则发生变化时能够重新计算 UTC 时间。
-
@MartinLiversage 是的,我打算存储它。调度还保存了本地时间,因此我们可以重新计算 UTC 时间。
-
我不知道为什么这被标记为“DateTime vs DateTimeOffset”重复。这太荒谬了,因为其他问题甚至没有谈到时区之间的转换。充其量这可能是“Google Maps Time Zone API vs DateTimeOffset”,但这是在拉伸它。
-
最终解决方案是,正如 +Matt Johnson 删除的答案所述,DateTimeOffset 类提供了我正在寻找的时区转换功能。也就是说,我不能取消删除或投票支持这个答案,因为它已被删除。这让我有点沮丧,因为我无法为自己的问题写出正确的答案。
标签: c# datetime timezone-offset google-maps-timezone