.ToUniversalTime()在DateTime实例(C#)上实际做什么?

时间:2019-06-27 11:59:21

标签: c# datetime utc

以下d,e,f值之间的真正区别是什么? “ ToUniversalTime()”实际上是做什么的?

  var d = DateTime.Now;
  var e = d.ToUniversalTime();
  var f = e;

有人知道吗?谢谢。

备注:当'Created'字段是datetime sql字段并且包含UTC时间时,我们在EF查询中检测到差异:

var itemsD = ctx.Log.Where(p => p.Created > d);
var itemsE = ctx.Log.Where(p => p.Created > e);

2 个答案:

答案 0 :(得分:4)

“ ToUniversalTime”方法返回的值由当前DateTime对象的“ Kind”属性确定。下面描述了可能的结果:

Kind: Utc 

结果:不执行任何转换。

Kind: Local. 

结果:当前的DateTime对象被转换为UTC。

Kind: Unspecified. 

结果:假定当前的DateTime对象为本地时间,并且转换的方式类似于Kind为Local。

默认值为“未指定”。

  

ToUniversalTime方法将DateTime值从本地时间转换为UTC。要将非本地时区的时间转换为UTC,请使用TimeZoneInfo.ConvertTimeToUtc(DateTime,TimeZoneInfo)方法。要转换与UTC的偏移量已知的时间,请使用ToUniversalTime方法。

答案 1 :(得分:0)

方法ToUniversalTime将本地时间的DateTime值转换为UTC小时。 如果要转换已知UTC值的时间值,则可以使用此方法