110,537
社区成员
发帖
与我相关
我的任务
分享
var date0 = DateTime.Parse("2014-1-05T08:15:30-08:00");
var date1 = DateTime.Parse("2014-1-05T10:15:30-08:00");
var text0 = date0.ToLocalTime().ToString();
var text1 = date1.ToLocalTime().ToString();
你可以看到,除了所在的时区,其它都一样。然后用本地时间格式来看,直接就看出差2个小时来了!var date0 = new DateTime(2015, 2, 1, 18, 20, 23, DateTimeKind.Local);
var date1 = new DateTime(2015, 2, 1, 18, 20, 23, DateTimeKind.Utc);
var text0 = date0.ToLocalTime().ToString();
var text1 = date1.ToLocalTime().ToString();
假设你使用早先的SQL Server之类的数据存储服务,假设它的“时间类型”并没有区分UTC还是各地Local标准时间,那么你可以把从不同终端发来的时间,一律以此时间的“UTC时间”来保存。将来要在不同的终端(例如不同语言的网页)上显示时,自动将从SQL Server读取出来的时间作为UTC时间,然后以当地时间(ToLocalTime)来显示。
var chinaZone = TimeZoneInfo.FindSystemTimeZoneById("China Standard Time");
var pstZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
var time = new DateTime(DateTime.Now.Ticks, DateTimeKind.Unspecified);
var pstTime = TimeZoneInfo.ConvertTime(time, chinaZone, pstZone);
这是把当前时间作为北京时间转换到太平洋时间。当然如果可以确定服务器的时区不变,那么一边用TimeZoneInfo.Local也行。