首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Convert.ChangeType to DateTime在不同的计算机上返回不同的结果

Convert.ChangeType to DateTime在不同的计算机上返回不同的结果
EN

Stack Overflow用户
提问于 2018-11-01 16:14:45
回答 2查看 166关注 0票数 0

在我的计算机上,运行Microsoft Windows 10 Pro Build 17134,调用

代码语言:javascript
运行
复制
Convert.ChangeType("1990-02-02T00:00:00.000+0300", typeof(DateTime), CultureInfo.InvariantCulture);

返回02.02.1990 0:00:00。时区设置为+3。

在我们的服务器上,运行Microsoft Windows Server2012UTC Standard Build9600,但是,相同的调用返回01.02.1990 23:00:00,这是相同的时刻,但在R2时区。服务器上的时区设置也是+3,定时匹配,日期匹配,所有我能想到的匹配。唯一的区别是我的机器上的时区是(+03:00) Moscow, St. Petersburg, Volgograd,而服务器上的时区是(UTC+03:00) Minsk

两个返回值都有Kind == DateTimeKind.Local

谁能解释一下造成这种行为的原因是什么?

EN

回答 2

Stack Overflow用户

发布于 2018-11-01 16:20:07

您应该使用支持偏移量的结构DateTimeOffset而不是DateTime

代码语言:javascript
运行
复制
var myDate = Convert.ChangeType("1990-02-02T00:00:00.000+0300", typeof(DateTimeOffset), CultureInfo.InvariantCulture);
DateTime utc = myDate.UtcDateTime; 

这应该给出同样的时间。

原因可能是在1990年,时区是不同的。我不确定,但如果您尝试转换DateTime.Now(),它应该是相同的。

票数 0
EN

Stack Overflow用户

发布于 2018-11-01 16:49:58

问题是由于Daylight saving time,它存在于(UTC+03:00) Minsk (白俄罗斯),但不存在于(UTC+03:00) Moscow, St. Petersburg, Volgograd (俄罗斯)。

感谢大家花时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53097402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档