Метод ConvertTime
Метод ConvertTime статический.
Меняются часы на циферблате и
Offset, не момент в UTC.
Для DateTime без смещения -
ConvertTimeToUtc
и
ConvertTimeFromUtc.
Синтаксис
DateTimeOffset shifted = TimeZoneInfo.ConvertTime(dateTimeOffset, destinationTimeZone);
Пример
Давайте перевести 03: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 = TimeZoneInfo.ConvertTime(
dto, TimeZoneInfo.Utc);
Console.WriteLine(res.Hour);
Console.WriteLine(res.Offset == TimeSpan.Zero);
}
}
Результат выполнения кода:
0
True
Пример
Давайте проверить минуту после перевода:
using System;
class Program
{
static void Main()
{
var dto = new DateTimeOffset(
2020, 1, 2, 3, 4, 5, TimeSpan.FromHours(3));
DateTimeOffset res = TimeZoneInfo.ConvertTime(
dto, TimeZoneInfo.Utc);
Console.WriteLine(res.Minute);
}
}
Результат выполнения кода:
4
Пример
Давайте убедиться, что исходный
DateTimeOffset не меняется:
using System;
class Program
{
static void Main()
{
var dto = new DateTimeOffset(
2020, 1, 2, 3, 4, 5, TimeSpan.FromHours(3));
TimeZoneInfo.ConvertTime(dto, TimeZoneInfo.Utc);
Console.WriteLine(dto.Hour);
}
}
Результат выполнения кода:
3
Смотрите также
-
ConvertTimeToUtc,
DateTimeв UTC -
ConvertTimeFromUtc,
из UTC -
TimeSpan,
смещениеOffset -
DateTimeOffset,
момент со смещением