将UTC/GMT时间转换为本地时间

将UTC/GMT时间转换为本地时间

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

Web服务返回的字段之一是日期时间字段。服务器返回一个GMT格式的字段,即末尾有一个“Z”。

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

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

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

此日期站点:

UTC/GMT偏移量

标准时区:UTC/GMT+12小时
夏令时:+1小时
当前时区偏移:世界协调时/格林尼治时间+13小时

我们如何调整以适应额外的时间?这能以编程的方式完成吗?还是这是PC上的某种设置?


qq_花开花谢_0
浏览 1017回答 3
3回答

jeck猫

用于字符串,如2012-09-19 01:27:30.000, DateTime.Parse无法说明日期和时间来自哪个时区。DateTime有一个仁爱属性,它可以有三个时区选项之一:未指定本土化世界协调时注 如果您希望表示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现在,一旦系统知道它在协调世界时的时间,你可以只打电话。ToLocalTime:DateTime dt = convertedDate.ToLocalTime();这将给你所需的结果。

湖上湖

TimeZone.CurrentTimeZone.ToLocalTime(date);
打开App,查看更多内容
随时随地看视频慕课网APP