Метод ConvertTimeToUtc
Метод ConvertTimeToUtc статический.
Смысл DateTimeKind важен:
Utc уже в UTC, а
Unspecified без пояса трактуют
по-разному - часы такого вызова
здесь не выводят. Для стабильных
цифр берут свой пояс
CreateCustomTimeZone со
смещением +3.
Синтаксис
DateTime utc = TimeZoneInfo.ConvertTimeToUtc(dateTime, sourceTimeZone);
DateTime utc2 = TimeZoneInfo.ConvertTimeToUtc(dateTime);
Пример
Давайте перевести местные
03:04:05 из пояса
+3:
using System;
class Program
{
static void Main()
{
var zone = TimeZoneInfo.CreateCustomTimeZone(
"abcde", TimeSpan.FromHours(3), "abcde", "abcde");
DateTime res = TimeZoneInfo.ConvertTimeToUtc(
new DateTime(2020, 1, 2, 3, 4, 5), zone);
Console.WriteLine(res.Hour);
Console.WriteLine(res.Kind == DateTimeKind.Utc);
}
}
Результат выполнения кода:
0
True
Пример
Давайте передать дату с
DateTimeKind.Utc без пояса:
using System;
class Program
{
static void Main()
{
var dt = new DateTime(2020, 1, 2, 3, 4, 5, DateTimeKind.Utc);
DateTime res = TimeZoneInfo.ConvertTimeToUtc(dt);
Console.WriteLine(res.Hour);
}
}
Результат выполнения кода:
3
Пример
Давайте проверить секунду у первого перевода:
using System;
class Program
{
static void Main()
{
var zone = TimeZoneInfo.CreateCustomTimeZone(
"abcde", TimeSpan.FromHours(3), "abcde", "abcde");
DateTime res = TimeZoneInfo.ConvertTimeToUtc(
new DateTime(2020, 1, 2, 3, 4, 5), zone);
Console.WriteLine(res.Second);
}
}
Результат выполнения кода:
5
Смотрите также
-
ConvertTimeFromUtc,
обратный перевод -
ConvertTime,
DateTimeOffset -
TimeSpan,
смещение пояса -
DateTimeOffset,
момент на оси