gpt4 book ai didi

.NET:从具有 GMT 偏移量的日期获取 UTC 日期时间

转载 作者:行者123 更新时间:2023-12-02 15:10:44 28 4
gpt4 key购买 nike

我有四个整数:

  • 一月中的某一天(1 - 31)
  • 一年中的月份(1 - 12)
  • 年份
  • 一天中的某个时间(0 - 23)

这些整数代表我的网页上的用户选择的日期和时间。他们可能在地球上的任何地方。

值得庆幸的是,我有他们在地球上位置的 GMT 偏移量。这是一个小数。

如何获取这四个整数,加上 GMT 偏移小数,并获得表示它们的 UTC 格式的 DateTime

要回答这个问题,请填写该函数的方法主体:

公共(public)静态DateTime UtcDateTime(int日,int月,int年,int小时,小数gmtOffset){ //去做}

最佳答案

我建议将 DateTimeTimeZoneInfo 结合使用。 。您可以在服务器上存储 UTC 时间,并使用每个用户自己的 TimeZoneInfo 为每个用户转换时间。 TimeZoneInfo 可以由用户设置,或者如果可能的话,您可以以某种方式从 Windows 设置中提取它。我们要求用户在其设置页面上设置TimeZoneInfo(通过下拉列表)。

更新

虽然 Microsoft 在 MSDN 中声明我们应该使用 DateTimeOffset 而不是 DateTime,但使用 DateTimeOffset 仍存在一些问题。我尝试序列化/反序列化通过 WCF 传输的 DataTimeOffset 实例失败。 DateTime/TimeZoneInfo 工作正常。我非常喜欢 DateTimeOffset,但在某些方面它仍然不适合实际应用程序。

DateTimeOffset 的另一个缺点是它不包含转换时间所需的所有信息,因为它只包含一个偏移量。但可能有多个具有相同偏移量的实际时区,因此您无法仅根据偏移量恢复时区。时区不仅仅是一个偏移量,它是定义时间转换、冬夏令时等的一组规则

更新

你在这里:

private static DateTime ToUTC(int day, int month, int year, int hour, decimal utcOffset)
{
TimeSpan offset = TimeSpan.FromMinutes((double)(utcOffset * 60)); // time zone offset is always aligned to minutes
return new DateTimeOffset(year, month, day, hour, 0, 0, offset).ToUniversalTime().DateTime;
}

关于.NET:从具有 GMT 偏移量的日期获取 UTC 日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5697307/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com