Метод DateTimeOffset.ToOffset
Метод ToOffset не сдвигает
момент в UTC: меняются только
отображаемые часы и Offset.
Сравнить UTC до и после можно через
UtcDateTime.
Синтаксис
DateTimeOffset shifted = dateTimeOffset.ToOffset(TimeSpan.Zero);
Пример
Давайте перевести 3:04:05
со смещением +3 в UTC:
using System;
class Program
{
static void Main()
{
var dto = new DateTimeOffset(
2020, 1, 2, 3, 4, 5, TimeSpan.FromHours(3));
DateTimeOffset res = dto.ToOffset(TimeSpan.Zero);
Console.WriteLine(res.Hour);
Console.WriteLine(res.Minute);
Console.WriteLine(res.Second);
Console.WriteLine(res.Offset == TimeSpan.Zero);
}
}
Результат выполнения кода:
0
4
5
True
Пример
Давайте убедиться, что UtcDateTime
не изменился:
using System;
class Program
{
static void Main()
{
var dto = new DateTimeOffset(
2020, 1, 2, 3, 4, 5, TimeSpan.FromHours(3));
DateTime before = dto.UtcDateTime;
DateTimeOffset shifted = dto.ToOffset(TimeSpan.Zero);
bool res = before == shifted.UtcDateTime;
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Пример
Давайте проверить, что исходный
dto не меняется:
using System;
class Program
{
static void Main()
{
var dto = new DateTimeOffset(
2020, 1, 2, 3, 4, 5, TimeSpan.FromHours(3));
dto.ToOffset(TimeSpan.Zero);
Console.WriteLine(dto.Hour);
}
}
Результат выполнения кода:
3
Смотрите также
-
Offset,
текущее смещение -
UtcDateTime,
момент UTC -
Parse,
смещение из текста -
DateTime.ToString,
без смещения