gpt4 book ai didi

c# - 将 UTC/GMT 时间转换为本地时间

转载 作者:IT王子 更新时间:2023-10-29 03:28:27 26 4
gpt4 key购买 nike

我们正在为 Web 服务客户端开发 C# 应用程序。这将在 Windows XP PC 上运行。

Web 服务返回的字段之一是 DateTime 字段。服务器返回 GMT 格式的字段,即末尾带有“Z”。

但是,我们发现.NET似乎在做某种隐式转换,而且时间总是12小时。

以下代码示例在一定程度上解决了这个问题,因为 12 小时的时差已经消失,但它没有考虑新西兰夏令时。

CultureInfo ci = new CultureInfo("en-NZ");
string date = "Web service date".ToString("R", ci);
DateTime convertedDate = DateTime.Parse(date);

根据 this date site :

UTC/GMT Offset

Standard time zone: UTC/GMT +12 hours
Daylight saving time: +1 hour
Current time zone offset: UTC/GMT +13 hours

我们如何调整加类时间?这可以通过编程方式完成还是在 PC 上进行某种设置?

最佳答案

对于 2012-09-19 01:27:30.000 这样的字符串,DateTime.Parse 无法判断日期和时间来自哪个时区。

DateTime 有一个 Kind 属性,它可以有三个时区选项之一:

  • 未指定
  • 本地
  • 世界协调时间

注意 如果您希望表示 UTC 或您本地时区以外的日期/时间,那么您应该使用 DateTimeOffset .


所以对于你问题中的代码:

DateTime convertedDate = DateTime.Parse(dateStr);

var kind = convertedDate.Kind; // will equal DateTimeKind.Unspecified

你说你知道那是什么,那就说吧。

DateTime convertedDate = DateTime.SpecifyKind(
DateTime.Parse(dateStr),
DateTimeKind.Utc);

var kind = convertedDate.Kind; // will equal DateTimeKind.Utc

现在,一旦系统知道它的 UTC 时间,您就可以调用 ToLocalTime:

DateTime dt = convertedDate.ToLocalTime();

这将为您提供所需的结果。

关于c# - 将 UTC/GMT 时间转换为本地时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/179940/

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