我在数据库中保存了一个UTC时间,并且我知道偏移量的格式如下。
-03:00:00
如何将此转换为
DateTime
。将“偏移量”应用于您已经拥有的 DateTime
最简单的方法是创建一个 TimeSpan
结构,其中包含您的偏移值,然后将偏移量 “添加” 到原始的 DateTime
值中。
例如:
DateTime utcDateTime = DateTime.Parse("29 July 2010 14:13:45");
TimeSpan offSet = TimeSpan.Parse("-03:00:00");
DateTime newDateTime = utcDateTime + offSet;
Console.WriteLine(newDateTime);
这将导致以下输出:
29/07/2010 11:13:45
这是原始时间(2010年7月29日14:13:45)减去3小时(偏移量为-03:00:00)的结果。
请注意,此技术仅对您的DateTime
值执行简单的算术运算,不考虑任何时区。
public static DateTime ToSafeUniversalTime(this DateTime date) {
if(date != DateTime.MinValue && date != DateTime.MaxValue) {
switch(date.Kind) {
case DateTimeKind.Unspecified:
date = new DateTime(date.Year, date.Month, date.Day, date.Hour, date.Minute, date.Second, DateTimeKind.Utc);
break;
case DateTimeKind.Local:
date = date.ToUniversalTime();
break;
}
}
return date;
}