来源参考 : http://www.cnblogs.com/qiuyi21/archive/2008/03/04/1089456.html
整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated)。UTC与格林尼治平均时(GMT, Greenwich Mean Time)一样,都与英国伦敦的本地时相同。在本文中,UTC与GMT含义完全相同。
做网页开发时,我们经常会处理一些时间格式.
基本上有3中情况 :
比如 服务器设在美国(UTC-6.00), 公司在中国(UTC+8.00) , 客户在夏威夷访问(UTC-10.00)
那么我们有好几种可能处理的方式,比如希望所有业务都已中国的时间为标准。
当序列化一个日期对象后,它会变成一个string "2014-11-19T23:00:25.571Z" 或者 "2014-11-20T07:02:20.6001565+08:00"
区别在最后的字, Z表示这是个UTC时间,+08:00 则表示这是个带有时差的时间(本地时间) 我们拿来 2014-11-20T07:02:20.6001565 - (+8:00) 就可以算出UTC了。
那么默认情况下,javascript的JSON.stringify 会把我们的时间对象转换成UTC时间,即 "2014-11-19T23:00:25.571Z" 这样的格式。
而 new Date("string") 则在遇到 “2014-11-19T23:00:25.571Z"格式时会转换成本地时间。
所在JS中你序列化后,反序列化回来,时间对象的值是一样。
但是,当我们和服务器沟通时,就要注意了。
比如当我使用 json.net 默认情况下反序列化 JsonConvert.DeserializeObject<List<DateTime>>(json);
它并不会对UTC时间做特别转换等。