如何在将时间转换为特定时区然后转换为UTC时获得偏移量? C#
发布时间:2020-12-16 01:28:15 所属栏目:百科 来源:网络整理
导读:我正在尝试将日期转换为UTC格式,我可以获得正确的偏移量.我在简单的DateTime.Now中使用ToString(“O”). 现在,当我将当前时间(EST)转换为CST(中央)或MST(山峰)时,我没有得到抵消.我在这里错过了什么?还有其他办法吗? 码: var currentTimeToUtc = DateTime
我正在尝试将日期转换为UTC格式,我可以获得正确的偏移量.我在简单的DateTime.Now中使用ToString(“O”).
现在,当我将当前时间(EST)转换为CST(中央)或MST(山峰)时,我没有得到抵消.我在这里错过了什么?还有其他办法吗? 码: var currentTimeToUtc = DateTime.Now.ToString("O"); // Output = "2018-12-27T12:31:21.9946661-05:00" --This is perfect. var centralTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.Now,"Central Standard Time"); var centralTimeToUtc = centralTime.ToString("O"); // Output = "2018-12-27T11:31:19.8046052" // Expected Output = "2018-12-27T11:31:19.8046052-06:00" var mountainTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.Now,"Mountain Standard Time"); var mountainTimeToUtc = mountainTime.ToString("O"); // Output = "2018-12-27T10:31:25.2438418" // Expected Output = "2018-12-27T10:31:25.2438418-07:00" 解决方法
这是DateTime的预期行为.如果需要保留时区信息,请改用DateTimeOffset.
输出差异的原因是DateTime.Now和centralTime / mountainTime属于不同类型:转换前的DateTime是Local,但转换后它变为Unspecified. 运行以下程序以确认: var now = DateTime.Now; Console.WriteLine(now.Kind); var centralTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(now,"Central Standard Time"); Console.WriteLine(centralTime.Kind); var mountainTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(now,"Mountain Standard Time"); Console.WriteLine(mountainTime.Kind); 无法更改行为,因为DateTime不存储偏移量;它依赖于两个众所周知的时区解释偏移 – Local表示您的本地时区,UTC表示UTC时区. 第三个选项Unspecified意味着DateTime的值本身不能被解释为绝对值,因为时区已被从中剥离.您的代码知道它是什么时区,因为您进行了转换,但有关时区的信息是程序设计的一部分,而不是相应的DateTime对象的一部分. .NET专门添加了DateTimeOffset对象来解决这个问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- PostgreSQL服务过程中的那些事一:启动postgres服务进程一.
- c# – 创建一个异步方法,包装订阅并在总线上发布
- ios – Crash ERROR_CGDataProvider_BufferIsNotReadable 1
- ruby-on-rails – Rails:如何对OrderedHash进行排序/重新排
- swift 创建cocoapod
- Swift - 通过url地址打开web页面
- xml 解析 python
- objective-c – 使用Xcode分析(产品>分析)有没有办法忽略给
- 【翻译】Fuse 与 React Native 或者 NativeScript 比有什么
- oracle – PL / SQL:如何检测正在使用的浏览器?