Что действительно делает .ToUniversalTime () в экземпляре DateTime (C #)? - PullRequest
0 голосов
/ 27 июня 2019

Какова реальная разница между следующими значениями d, e, f? Что действительно делает ToUniversalTime ()?

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

Кто-нибудь знает? Спасибо.

Примечание: мы обнаружили различия в запросе EF, когда поле «Создано» является полем sql datetime и содержит время UTC:

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

Ответы [ 2 ]

4 голосов
/ 27 июня 2019

Значение, возвращаемое методом «ToUniversalTime», определяется свойством «Kind» текущего объекта DateTime.Ниже описаны возможные результаты:

Kind: Utc 

Результаты: преобразование не выполняется.

Kind: Local. 

Результаты: текущий объект DateTime преобразуется в UTC.

Kind: Unspecified. 

Результаты: текущим объектом DateTime считается местное время, и преобразование выполняется так, как если бы тип Kind был локальным.

По умолчанию установлено значение Unspecified.

Метод ToUniversalTime преобразуетзначение DateTime от местного времени до UTC.Чтобы преобразовать время в нелокальном часовом поясе в UTC, используйте метод TimeZoneInfo.ConvertTimeToUtc (DateTime, TimeZoneInfo).Чтобы преобразовать время, для которого известно смещение от UTC, используйте метод ToUniversalTime.

0 голосов
/ 27 июня 2019

Метод ToUniversalTime преобразует значение DateTime местного часа в час UTC. Если вы хотите преобразовать значение времени, для которого известно значение UTC, вы можете использовать этот метод

...