为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

qq_花开花谢_0 2019-06-24 15:30:55
将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上的某种设置?
查看完整描述

3 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

用于字符串,如2012-09-19 01:27:30.000DateTime.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();

这将给你所需的结果。


查看完整回答
反对 回复 2019-06-24
?
湖上湖

TA贡献2003条经验 获得超2个赞

TimeZone.CurrentTimeZone.ToLocalTime(date);


查看完整回答
反对 回复 2019-06-24
  • 3 回答
  • 0 关注
  • 1013 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信