DateTimeOffset
DateTimeOffset задаёт дату, время
и TimeSpan смещения. Один и тот
же момент в UTC может выглядеть как
разные часы на циферблате. Свойство
DateTime отдаёт часы без перевода,
UtcDateTime -
в UTC. Разбор строк -
Parse.
Синтаксис
var dto = new DateTimeOffset(
2020, 1, 2, 3, 4, 5, TimeSpan.FromHours(3));
Пример
Давайте сравним два значения с разным смещением, но одним моментом UTC:
using System;
class Program
{
static void Main()
{
var left = new DateTimeOffset(
2020, 1, 2, 3, 0, 0, TimeSpan.FromHours(3));
var right = new DateTimeOffset(
2020, 1, 2, 0, 0, 0, TimeSpan.Zero);
bool res = left == right;
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Пример
Давайте прочитаем DateTime
без смены часов:
using System;
class Program
{
static void Main()
{
var dto = new DateTimeOffset(
2020, 1, 2, 3, 4, 5, TimeSpan.FromHours(3));
Console.WriteLine(dto.DateTime.Hour);
Console.WriteLine(dto.DateTime.Kind == DateTimeKind.Unspecified);
}
}
Результат выполнения кода:
3
True
Пример
Давайте выведем смещение в часах:
using System;
class Program
{
static void Main()
{
var dto = new DateTimeOffset(
2020, 1, 2, 3, 4, 5, TimeSpan.FromHours(3));
Console.WriteLine(dto.Offset.TotalHours);
}
}
Результат выполнения кода:
3
Смотрите также
-
Offset,
смещение от UTC -
ToOffset,
сменить смещение -
DateTime.Parse,
разбор без смещения -
DateTime.ToString,
строка без пояса