分析问题
UTC其实就是格林威治标准时间(GMT),它是在0度经度测量到的时间,每个地域的本地时间都和UTC时间有一个固定的时间差,有些地域实行夏令时,则那些地域的本地时间就是UTC时间加上时差再加上夏令时的影响。
在本书前面的章节中已经介绍了,DateTime中用来存储时间的64位长整数只使用了低62位来代表时间,而高两位则是枚举的标志。DateTime的Kind属性公开了这个标志,Kind的代码更好地说明了这一特性:
在很多情况下,当地时间和UTC时间需要进行相互转换。DateTime结构提供了ToUniversalTime和ToLocalTime两个方法,这两个方法不仅会改变存储的时间,并且会更改Kind标志。以下代码展示了这两个方法的使用方法。
using System; namespace Test { class UTCLocal { static void Main() { DateTime date = DateTime.Now; Console.WriteLine("当前本地时间:{0}", date.ToString()); Console.WriteLine("Kind标志:{0}", date.Kind.ToString()); //转换到UTC时间 DateTime newDate = date.ToUniversalTime(); Console.WriteLine("转换到UTC时间:{0}", newDate.ToString()); Console.WriteLine("新的Kind标志:{0}", newDate.Kind.ToString()); //转换到本地时间 DateTime backDate = newDate.ToLocalTime(); Console.WriteLine("转换回本地时间:{0}", backDate.ToString()); Console.WriteLine("转换回后的Kind标志:{0}", backDate.Kind.ToString()); Console.Read(); } } }
如读者所见的,两个方法的操作非常简便,但不要忽视了这两个方法对标志的修改,下面是程序的执行结果
注意
本地时间和UTC时间的转换是会考虑夏令时的。
答案
UTC是格林威治标准时间(GMT),它是在0度精度测量到的时间。通过ToUniversalTime和ToLocalTime方法可以在本地时间和UTC时间之间进行转换。两个方法在转换时会相应地设置保存时间的64位整数的高两位标志,并且转换的算法考虑了夏令时。
什么是UTC时间,如何转换到UTC时间
时间: 2024-10-10 10:45:31