Отправка DateTimeOffset через HttpClient C#
Столкнулся с проблемой в передачи времени на сервер написанный на WebApi. Подозреваю, что некорректно данные сериализуются в Json формат. Данные передаю в формате DateTimeOffset, клиент — простая форма на WPF. Модель данных на клиенте (на сервере аналогичная, только с атрибутами для Id):
public class Person < public int Id < get; set >public string Name < get; set; >public string LastName < get; set; >public string Department < get; set; >public DateTimeOffset PhotoUploadDateTime < get; set; >public string Photo < get; set; >>
Метод отправки
private void AddUserClick(object sender, RoutedEventArgs e) < var fileModel = new Person < //Id = new Guid(), Name = txtName.Text, LastName = txtLastName.Text, Department = txtDepartment.Text, PhotoUploadDateTime = DateTimeOffset.UtcNow, Photo = Convert.ToBase64String(image) >; var client = new WebApiSender(urlAddress); client.AddPerson(fileModel); MessageBox.Show("File has been uploaded"); >
Метод AddPerson HttpClient’а:
public async Task AddPerson(Person person) < using (var client = new HttpClient()) < client.BaseAddress = new Uri(baseAddress); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); var response = await client.PostAsJsonAsync("api/employee/", person); if (!response.IsSuccessStatusCode) < throw new Exception("Error when adding file!"); >> >
Заполнение модели данных на клиенте
Данные которые пришли в контроллер и записываются в БД
В итоге на сервер в контроллер приходят валидные значения, кроме времени и даты.
Создание экземпляра объекта DateTimeOffset
Структура DateTimeOffset предлагает несколько способов создания новых DateTimeOffset значений. Многие из них напрямую соответствуют методам, доступным для создания экземпляров новых DateTime значений, с усовершенствованиями, позволяющими указать смещение значения даты и времени от времени в формате UTC. В частности, можно создать DateTimeOffset экземпляр значения следующими способами:
- С помощью литерала даты и времени.
- Путем вызова конструктора DateTimeOffset .
- Путем неявного преобразования значения в DateTimeOffset значение.
- Разбором строкового представления даты и времени.
В этом разделе приведены более подробные сведения и примеры кода, иллюстрирующие эти методы создания экземпляров новых DateTimeOffset значений.
Литералы даты и времени
Для языков, поддерживающих его, одним из наиболее распространенных способов создания экземпляра DateTime значения является указание даты и времени в качестве жестко закодированного литерального значения. Например, следующий код Visual Basic создает объект со значением DateTime 1 мая 2008 г. в 8:06:32.
Dim literalDate1 As Date = #05/01/2008 8:06:32 AM# Console.WriteLine(literalDate1.ToString()) ' Displays: ' 5/1/2008 8:06:32 AM
DateTimeOffset Значения также можно инициализировать с помощью литералы даты и времени при использовании языков, поддерживающих DateTime литералы. Например, следующий код Visual Basic создает DateTimeOffset объект .
Dim literalDate As DateTimeOffset = #05/01/2008 8:06:32 AM# Console.WriteLine(literalDate.ToString()) ' Displays: ' 5/1/2008 8:06:32 AM -07:00
Как показано в выходных данных консоли, созданному DateTimeOffset таким образом значению присваивается смещение местного часового пояса. Это означает, что значение, присвоенное DateTimeOffset с помощью символьного литерала, не идентифицирует ни одну точку времени, если код выполняется на разных компьютерах.
Конструкторы DateTimeOffset
Тип DateTimeOffset определяет шесть конструкторов. Четыре из них напрямую соответствуют конструкторам DateTime с дополнительным параметром типа TimeSpan , который определяет смещение даты и времени от UTC. Они позволяют определить DateTimeOffset значение на основе значения отдельных компонентов даты и времени. Например, следующий код использует эти четыре конструктора для создания DateTimeOffset экземпляров объектов с идентичными значениями 01.05.2008 8:06:32 +01:00.
DateTimeOffset dateAndTime; // Instantiate date and time using years, months, days, // hours, minutes, and seconds dateAndTime = new DateTimeOffset(2008, 5, 1, 8, 6, 32, new TimeSpan(1, 0, 0)); Console.WriteLine(dateAndTime); // Instantiate date and time using years, months, days, // hours, minutes, seconds, and milliseconds dateAndTime = new DateTimeOffset(2008, 5, 1, 8, 6, 32, 545, new TimeSpan(1, 0, 0)); Console.WriteLine(" ", dateAndTime.ToString("G"), dateAndTime.ToString("zzz")); // Instantiate date and time using Persian calendar with years, // months, days, hours, minutes, seconds, and milliseconds dateAndTime = new DateTimeOffset(1387, 2, 12, 8, 6, 32, 545, new PersianCalendar(), new TimeSpan(1, 0, 0)); // Note that the console output displays the date in the Gregorian // calendar, not the Persian calendar. Console.WriteLine(" ", dateAndTime.ToString("G"), dateAndTime.ToString("zzz")); // Instantiate date and time using number of ticks // 05/01/2008 8:06:32 AM is 633,452,259,920,000,000 ticks dateAndTime = new DateTimeOffset(633452259920000000, new TimeSpan(1, 0, 0)); Console.WriteLine(dateAndTime); // The example displays the following output to the console: // 5/1/2008 8:06:32 AM +01:00 // 5/1/2008 8:06:32 AM +01:00 // 5/1/2008 8:06:32 AM +01:00 // 5/1/2008 8:06:32 AM +01:00
Dim dateAndTime As DateTimeOffset ' Instantiate date and time using years, months, days, ' hours, minutes, and seconds dateAndTime = New DateTimeOffset(2008, 5, 1, 8, 6, 32, _ New TimeSpan(1, 0, 0)) Console.WriteLine(dateAndTime) ' Instantiate date and time using years, months, days, ' hours, minutes, seconds, and milliseconds dateAndTime = New DateTimeOffset(2008, 5, 1, 8, 6, 32, 545, _ New TimeSpan(1, 0, 0)) Console.WriteLine(" ", dateAndTime.ToString("G"), _ dateAndTime.ToString("zzz")) ' Instantiate date and time using Persian calendar with years, ' months, days, hours, minutes, seconds, and milliseconds dateAndTime = New DateTimeOffset(1387, 2, 12, 8, 6, 32, 545, New PersianCalendar, New TimeSpan(1, 0, 0)) ' Note that the console output displays the date in the Gregorian ' calendar, not the Persian calendar. Console.WriteLine(" ", dateAndTime.ToString("G"), _ dateAndTime.ToString("zzz")) ' Instantiate date and time using number of ticks ' 05/01/2008 8:06:32 AM is 633,452,259,920,000,000 ticks dateAndTime = New DateTimeOffset(633452259920000000, New TimeSpan(1, 0, 0)) Console.WriteLine(dateAndTime) ' The example displays the following output to the console: ' 5/1/2008 8:06:32 AM +01:00 ' 5/1/2008 8:06:32 AM +01:00 ' 5/1/2008 8:06:32 AM +01:00 ' 5/1/2008 8:06:32 AM +01:00
Обратите внимание, что, когда значение объекта, созданного DateTimeOffset с использованием PersianCalendar объекта в качестве одного из аргументов для его конструктора, отображается в консоли, оно выражается в виде даты в григорианском, а не персидском календаре. Чтобы вывести дату с помощью персидского календаря, см. пример в PersianCalendar разделе .
Два других конструктора создают DateTimeOffset объект из DateTime значения . Первый из них имеет один параметр — значение для DateTime преобразования в DateTimeOffset значение. Смещение результирующего DateTimeOffset значения зависит Kind от свойства одного параметра конструктора. Если его значение равно DateTimeKind.Utc, смещение задается равным TimeSpan.Zero. В противном случае его смещение приравнивается к смещению местного часового пояса. В следующем примере показано использование этого конструктора для создания DateTimeOffset экземпляров объектов, представляющих UTC и местный часовой пояс:
// Declare date; Kind property is DateTimeKind.Unspecified DateTime sourceDate = new DateTime(2008, 5, 1, 8, 30, 0); DateTimeOffset targetTime; // Instantiate a DateTimeOffset value from a UTC time DateTime utcTime = DateTime.SpecifyKind(sourceDate, DateTimeKind.Utc); targetTime = new DateTimeOffset(utcTime); Console.WriteLine(targetTime); // Displays 5/1/2008 8:30:00 AM +00:00 // Because the Kind property is DateTimeKind.Utc, // the offset is TimeSpan.Zero. // Instantiate a DateTimeOffset value from a UTC time with a zero offset targetTime = new DateTimeOffset(utcTime, TimeSpan.Zero); Console.WriteLine(targetTime); // Displays 5/1/2008 8:30:00 AM +00:00 // Because the Kind property is DateTimeKind.Utc, // the call to the constructor succeeds // Instantiate a DateTimeOffset value from a UTC time with a negative offset try < targetTime = new DateTimeOffset(utcTime, new TimeSpan(-2, 0, 0)); Console.WriteLine(targetTime); >catch (ArgumentException) < Console.WriteLine("Attempt to create DateTimeOffset value from failed.", targetTime); > // Throws exception and displays the following to the console: // Attempt to create DateTimeOffset value from 5/1/2008 8:30:00 AM +00:00 failed. // Instantiate a DateTimeOffset value from a local time DateTime localTime = DateTime.SpecifyKind(sourceDate, DateTimeKind.Local); targetTime = new DateTimeOffset(localTime); Console.WriteLine(targetTime); // Displays 5/1/2008 8:30:00 AM -07:00 // Because the Kind property is DateTimeKind.Local, // the offset is that of the local time zone. // Instantiate a DateTimeOffset value from an unspecified time targetTime = new DateTimeOffset(sourceDate); Console.WriteLine(targetTime); // Displays 5/1/2008 8:30:00 AM -07:00 // Because the Kind property is DateTimeKind.Unspecified, // the offset is that of the local time zone.
' Declare date; Kind property is DateTimeKind.Unspecified Dim sourceDate As Date = #5/1/2008 8:30 AM# Dim targetTime As DateTimeOffset ' Instantiate a DateTimeOffset value from a UTC time Dim utcTime As Date = Date.SpecifyKind(sourceDate, DateTimeKind.Utc) targetTime = New DateTimeOffset(utcTime) Console.WriteLine(targetTime) ' Displays 5/1/2008 8:30:00 AM +00:00 ' Because the Kind property is DateTimeKind.Utc, ' the offset is TimeSpan.Zero. ' Instantiate a DateTimeOffset value from a local time Dim localTime As Date = Date.SpecifyKind(sourceDate, DateTimeKind.Local) targetTime = New DateTimeOffset(localTime) Console.WriteLine(targetTime) ' Displays 5/1/2008 8:30:00 AM -07:00 ' Because the Kind property is DateTimeKind.Local, ' the offset is that of the local time zone. ' Instantiate a DateTimeOffset value from an unspecified time targetTime = New DateTimeOffset(sourceDate) Console.WriteLine(targetTime) ' Displays 5/1/2008 8:30:00 AM -07:00 ' Because the Kind property is DateTimeKind.Unspecified, ' the offset is that of the local time zone. '
Вызов перегрузки конструктора DateTimeOffset с одним DateTime параметром эквивалентен выполнению неявного DateTime преобразования значения в DateTimeOffset значение.
Второй конструктор, который создает DateTimeOffset объект из DateTime значения, имеет два параметра: DateTime значение для преобразования и TimeSpan значение, представляющее смещение даты и времени от UTC. Это значение смещения должно соответствовать свойству Kind первого параметра конструктора, иначе ArgumentException возникает исключение . Kind Если свойство первого параметра равно DateTimeKind.Utc, значение второго параметра должно быть TimeSpan.Zeroравно . Kind Если свойство первого параметра равно DateTimeKind.Local, значение второго параметра должно быть смещением часового пояса локальной системы. Kind Если свойство первого параметра равно DateTimeKind.Unspecified, смещение может быть любым допустимым значением. В следующем коде показаны вызовы этого конструктора для преобразования DateTime в DateTimeOffset значения.
DateTime sourceDate = new DateTime(2008, 5, 1, 8, 30, 0); DateTimeOffset targetTime; // Instantiate a DateTimeOffset value from a UTC time with a zero offset. DateTime utcTime = DateTime.SpecifyKind(sourceDate, DateTimeKind.Utc); targetTime = new DateTimeOffset(utcTime, TimeSpan.Zero); Console.WriteLine(targetTime); // Displays 5/1/2008 8:30:00 AM +00:00 // Because the Kind property is DateTimeKind.Utc, // the call to the constructor succeeds // Instantiate a DateTimeOffset value from a UTC time with a non-zero offset. try < targetTime = new DateTimeOffset(utcTime, new TimeSpan(-2, 0, 0)); Console.WriteLine(targetTime); >catch (ArgumentException) < Console.WriteLine("Attempt to create DateTimeOffset value from failed.", utcTime); > // Throws exception and displays the following to the console: // Attempt to create DateTimeOffset value from 5/1/2008 8:30:00 AM failed. // Instantiate a DateTimeOffset value from a local time with // the offset of the local time zone DateTime localTime = DateTime.SpecifyKind(sourceDate, DateTimeKind.Local); targetTime = new DateTimeOffset(localTime, TimeZoneInfo.Local.GetUtcOffset(localTime)); Console.WriteLine(targetTime); // Displays 5/1/2008 8:30:00 AM -07:00 // Because the Kind property is DateTimeKind.Local and the offset matches // that of the local time zone, the call to the constructor succeeds. // Instantiate a DateTimeOffset value from a local time with a zero offset. try < targetTime = new DateTimeOffset(localTime, TimeSpan.Zero); Console.WriteLine(targetTime); >catch (ArgumentException) < Console.WriteLine("Attempt to create DateTimeOffset value from failed.", localTime); > // Throws exception and displays the following to the console: // Attempt to create DateTimeOffset value from 5/1/2008 8:30:00 AM failed. // Instantiate a DateTimeOffset value with an arbitrary time zone. string timeZoneName = "Central Standard Time"; TimeSpan offset = TimeZoneInfo.FindSystemTimeZoneById(timeZoneName). GetUtcOffset(sourceDate); targetTime = new DateTimeOffset(sourceDate, offset); Console.WriteLine(targetTime); // Displays 5/1/2008 8:30:00 AM -05:00
Dim sourceDate As Date = #5/1/2008 8:30 AM# Dim targetTime As DateTimeOffset ' Instantiate a DateTimeOffset value from a UTC time with a zero offset. Dim utcTime As Date = Date.SpecifyKind(sourceDate, DateTimeKind.Utc) targetTime = New DateTimeOffset(utcTime, TimeSpan.Zero) Console.WriteLine(targetTime) ' Displays 5/1/2008 8:30:00 AM +00:00 ' Because the Kind property is DateTimeKind.Utc, ' the call to the constructor succeeds. ' Instantiate a DateTimeOffset value from a UTC time with a non-zero offset. Try targetTime = New DateTimeOffset(utcTime, New TimeSpan(-2, 0, 0)) Console.WriteLine(targetTime) Catch e As ArgumentException Console.WriteLine("Attempt to create DateTimeOffset value from failed.", _ utcTime) End Try ' Throws exception and displays the following to the console: ' Attempt to create DateTimeOffset value from 5/1/2008 8:30:00 AM failed. ' Instantiate a DateTimeOffset value from a local time with ' the offset of the local time zone. Dim localTime As Date = Date.SpecifyKind(sourceDate, DateTimeKind.Local) targetTime = New DateTimeOffset(localTime, _ TimeZoneInfo.Local.GetUtcOffset(localTime)) Console.WriteLine(targetTime) ' Because the Kind property is DateTimeKind.Local and the offset matches ' that of the local time zone, the call to the constructor succeeds. ' Instantiate a DateTimeOffset value from a local time with a zero offset. Try targetTime = New DateTimeOffset(localTime, TimeSpan.Zero) Console.WriteLine(targetTime) Catch e As ArgumentException Console.WriteLine("Attempt to create DateTimeOffset value from failed.", _ localTime) End Try ' Throws exception and displays the following to the console: ' Attempt to create DateTimeOffset value from 5/1/2008 8:30:00 AM failed. ' Instantiate a DateTimeOffset value with an arbitrary time zone. Dim timeZoneName As String = "Central Standard Time" Dim offset As TimeSpan = TimeZoneInfo.FindSystemTimeZoneById(timeZoneName). _ GetUtcOffset(sourceDate) targetTime = New DateTimeOffset(sourceDate, offset) Console.WriteLine(targetTime) ' Displays 5/1/2008 8:30:00 AM -05:00
Неявное преобразование типов
Тип DateTimeOffset поддерживает одно неявное преобразование типов: из DateTime значения в DateTimeOffset значение. (Неявное преобразование типов — это преобразование из одного типа в другой, которое не требует явного приведения (в C#) или преобразования (в Visual Basic) и не теряет информацию.) Благодаря этому можно использовать код, аналогичный приведенному ниже.
DateTimeOffset targetTime; // The Kind property of sourceDate is DateTimeKind.Unspecified DateTime sourceDate = new DateTime(2008, 5, 1, 8, 30, 0); targetTime = sourceDate; Console.WriteLine(targetTime); // Displays 5/1/2008 8:30:00 AM -07:00 // define a UTC time (Kind property is DateTimeKind.Utc) DateTime utcTime = DateTime.SpecifyKind(sourceDate, DateTimeKind.Utc); targetTime = utcTime; Console.WriteLine(targetTime); // Displays 5/1/2008 8:30:00 AM +00:00 // Define a local time (Kind property is DateTimeKind.Local) DateTime localTime = DateTime.SpecifyKind(sourceDate, DateTimeKind.Local); targetTime = localTime; Console.WriteLine(targetTime); // Displays 5/1/2008 8:30:00 AM -07:00
Dim targetTime As DateTimeOffset ' The Kind property of sourceDate is DateTimeKind.Unspecified Dim sourceDate As Date = #5/1/2008 8:30 AM# targetTime = sourceDate Console.WriteLine(targetTime) ' Displays 5/1/2008 8:30:00 AM -07:00 ' define a UTC time (Kind property is DateTimeKind.Utc) Dim utcTime As Date = Date.SpecifyKind(sourceDate, DateTimeKind.Utc) targetTime = utcTime Console.WriteLine(targetTime) ' Displays 5/1/2008 8:30:00 AM +00:00 ' Define a local time (Kind property is DateTimeKind.Local) Dim localTime As Date = Date.SpecifyKind(sourceDate, DateTimeKind.Local) targetTime = localTime Console.WriteLine(targetTime) ' Displays 5/1/2008 8:30:00 AM -07:00
Смещение результирующего DateTimeOffset значения зависит DateTime.Kind от значения свойства . Если его значение равно DateTimeKind.Utc, смещение задается равным TimeSpan.Zero. Если его значение равно DateTimeKind.Local или DateTimeKind.Unspecified, смещение устанавливается равным смещению местного часового пояса.
Анализ строкового представления даты и времени
Тип DateTimeOffset поддерживает четыре метода, которые позволяют преобразовать строковое представление даты и времени в DateTimeOffset значение:
- Parse, который пытается преобразовать строковое представление даты и времени в DateTimeOffset значение и вызывает исключение в случае сбоя преобразования.
- TryParse, который пытается преобразовать строковое представление даты и времени в DateTimeOffset значение и возвращает в false случае сбоя преобразования.
- ParseExact, который пытается преобразовать строковое представление даты и времени в указанном формате в DateTimeOffset значение. Этот метод создает исключение при сбое преобразования.
- TryParseExact, который пытается преобразовать строковое представление даты и времени в указанном формате в DateTimeOffset значение. При сбое преобразования метод возвращает значение false .
В следующем примере показаны вызовы каждого из этих четырех методов преобразования строк для создания экземпляра DateTimeOffset значения.
string timeString; DateTimeOffset targetTime; timeString = "05/01/2008 8:30 AM +01:00"; try < targetTime = DateTimeOffset.Parse(timeString); Console.WriteLine(targetTime); >catch (FormatException) < Console.WriteLine("Unable to parse .", timeString); > timeString = "05/01/2008 8:30 AM"; if (DateTimeOffset.TryParse(timeString, out targetTime)) Console.WriteLine(targetTime); else Console.WriteLine("Unable to parse .", timeString); timeString = "Thursday, 01 May 2008 08:30"; try < targetTime = DateTimeOffset.ParseExact(timeString, "f", CultureInfo.InvariantCulture); Console.WriteLine(targetTime); >catch (FormatException) < Console.WriteLine("Unable to parse .", timeString); > timeString = "Thursday, 01 May 2008 08:30 +02:00"; string formatString; formatString = CultureInfo.InvariantCulture.DateTimeFormat.LongDatePattern + " " + CultureInfo.InvariantCulture.DateTimeFormat.ShortTimePattern + " zzz"; if (DateTimeOffset.TryParseExact(timeString, formatString, CultureInfo.InvariantCulture, DateTimeStyles.AllowLeadingWhite, out targetTime)) Console.WriteLine(targetTime); else Console.WriteLine("Unable to parse .", timeString); // The example displays the following output to the console: // 5/1/2008 8:30:00 AM +01:00 // 5/1/2008 8:30:00 AM -07:00 // 5/1/2008 8:30:00 AM -07:00 // 5/1/2008 8:30:00 AM +02:00
Dim timeString As String Dim targetTime As DateTimeOffset timeString = "05/01/2008 8:30 AM +01:00" Try targetTime = DateTimeOffset.Parse(timeString) Console.WriteLine(targetTime) Catch e As FormatException Console.WriteLine("Unable to parse .", timeString) End Try timeString = "05/01/2008 8:30 AM" If DateTimeOffset.TryParse(timeString, targetTime) Then Console.WriteLine(targetTime) Else Console.WriteLine("Unable to parse .", timeString) End If timeString = "Thursday, 01 May 2008 08:30" Try targetTime = DateTimeOffset.ParseExact(timeString, "f", _ CultureInfo.InvariantCulture) Console.WriteLine(targetTime) Catch e As FormatException Console.WriteLine("Unable to parse .", timeString) End Try timeString = "Thursday, 01 May 2008 08:30 +02:00" Dim formatString As String formatString = CultureInfo.InvariantCulture.DateTimeFormat.LongDatePattern & _ " " & _ CultureInfo.InvariantCulture.DateTimeFormat.ShortTimePattern & _ " zzz" If DateTimeOffset.TryParseExact(timeString, _ formatString, _ CultureInfo.InvariantCulture, _ DateTimeStyles.AllowLeadingWhite, _ targetTime) Then Console.WriteLine(targetTime) Else Console.WriteLine("Unable to parse .", timeString) End If ' The example displays the following output to the console: ' 5/1/2008 8:30:00 AM +01:00 ' 5/1/2008 8:30:00 AM -07:00 ' 5/1/2008 8:30:00 AM -07:00 ' 5/1/2008 8:30:00 AM +02:00
См. также раздел
Работа с датами и временем
Для работы с датами и временем в .NET предназначена структура DateTime . Она представляет дату и время от 00:00:00 1 января 0001 года до 23:59:59 31 декабря 9999 года.
Для создания нового объекта DateTime также можно использовать конструктор. Пустой конструктор создает начальную дату:
DateTime dateTime = new DateTime(); Console.WriteLine(dateTime); // 01.01.0001 0:00:00
То есть мы получим минимально возможное значение, которое также можно получить следующим образом:
Console.WriteLine(DateTime.MinValue);
Чтобы задать конкретную дату, нужно использовать один из конструкторов, принимающих параметры:
DateTime date1 = new DateTime(2015, 7, 20); // год - месяц - день Console.WriteLine(date1); // 20.07.2015 0:00:00
DateTime date1 = new DateTime(2015, 7, 20, 18, 30, 25); // год - месяц - день - час - минута - секунда Console.WriteLine(date1); // 20.07.2015 18:30:25
Если необходимо получить текущую время и дату, то можно использовать ряд свойств DateTime:
Console.WriteLine(DateTime.Now); Console.WriteLine(DateTime.UtcNow); Console.WriteLine(DateTime.Today);
20.07.2015 11:43:33 20.07.2015 8:43:33 20.07.2015 0:00:00
Свойство DateTime.Now берет текущую дату и время компьютера, DateTime.UtcNow — дата и время относительно времени по Гринвичу (GMT) и DateTime.Today — только текущая дата.
При работе с датами надо учитывать, что по умолчанию для представления дат применяется григорианский календарь. Но что будет, если мы захотим получить день недели для 5 октября 1582 года:
DateTime someDate = new DateTime(1582, 10, 5); Console.WriteLine(someDate.DayOfWeek);
Консоль высветит значение Tuesday, то есть вторник. Однако, как может быть известно из истории, впервые переход с юлианского календаря на григорианский состоялся в октябре 1582 года. Тогда после даты 4 октября (четверг) (еще по юлианскому календарю) сразу перешли к 15 октября (пятница)(уже по григорианскому календарю). Таким образом, фактически выкинули 10 дней. То есть после 4 октября шло 15 октября.
В большинстве случаев данный факт вряд ли как-то повлияет на вычисления, однако при работе с очень давними датами данный аспект следует учитывать.
Операции с DateTime
Основные операции со структурой DateTime связаны со сложением или вычитанием дат. Например, надо к некоторой дате прибавить или, наоборот, отнять несколько дней.
Для добавления дат используется ряд методов:
- Add(TimeSpan value) : добавляет к дате значение TimeSpan
- AddDays(double value) : добавляет к текущей дате несколько дней
- AddHours(double value) : добавляет к текущей дате несколько часов
- AddMinutes(double value) : добавляет к текущей дате несколько минут
- AddMonths(int value) : добавляет к текущей дате несколько месяцев
- AddYears(int value) : добавляет к текущей дате несколько лет
Например, добавим к некоторой дате 3 часа:
DateTime date1 = new DateTime(2015, 7, 20, 18, 30, 25); // 20.07.2015 18:30:25 Console.WriteLine(date1.AddHours(3)); // 20.07.2015 21:30:25
Для вычитания дат используется метод Subtract(DateTime date) :
DateTime date1 = new DateTime(2015, 7, 20, 18, 30, 25); // 20.07.2015 18:30:25 DateTime date2 = new DateTime(2015, 7, 20, 15, 30, 25); // 20.07.2015 15:30:25 Console.WriteLine(date1.Subtract(date2)); // 03:00:00
Здесь даты различаются на три часа, поэтому результатом будет дата «03:00:00».
Метод Substract не имеет возможностей для отдельного вычитания дней, часов и так далее. Но это и не надо, так как мы можем передавать в метод AddDays() и другие методы добавления отрицательные значения:
// вычтем три часа DateTime date1 = new DateTime(2015, 7, 20, 18, 30, 25); // 20.07.2015 18:30:25 Console.WriteLine(date1.AddHours(-3)); // 20.07.2015 15:30:25
Кроме операций сложения и вычитания еще есть ряд методов форматирования дат:
DateTime date1 = new DateTime(2015, 7, 20, 18, 30, 25); Console.WriteLine(date1.ToLocalTime()); // 20.07.2015 21:30:25 Console.WriteLine(date1.ToUniversalTime()); // 20.07.2015 15:30:25 Console.WriteLine(date1.ToLongDateString()); // 20 июля 2015 г. Console.WriteLine(date1.ToShortDateString()); // 20.07.2015 Console.WriteLine(date1.ToLongTimeString()); // 18:30:25 Console.WriteLine(date1.ToShortTimeString()); // 18:30
Метод ToLocalTime() преобразует время UTC в локальное время, добавляя смещение относительно времени по Гринвичу. Метод ToUniversalTime() , наоборот, преобразует локальное время во время UTC, то есть вычитает смещение относительно времени по Гринвичу. Остальные методы преобразуют дату к определенному формату.
Date Time Offset Структура
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет момент времени, который обычно выражается в виде даты и времени суток, относительно времени в формате UTC.
public value class DateTimeOffset : IComparable, IComparable, IEquatable, IFormattable
public value class DateTimeOffset : IComparable, IComparable, IEquatable, IFormattable, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
public value class DateTimeOffset : IComparable, IComparable, IEquatable, ISpanFormattable, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
public value class DateTimeOffset : IComparable, IComparable, IEquatable, IParsable, ISpanFormattable, ISpanParsable, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
public value class DateTimeOffset : IComparable, IComparable, IEquatable, IParsable, ISpanFormattable, ISpanParsable, IUtf8SpanFormattable, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
public struct DateTimeOffset : IComparable, IComparable, IEquatable, IFormattable
public readonly struct DateTimeOffset : IComparable, IComparable, IEquatable, IFormattable, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
public readonly struct DateTimeOffset : IComparable, IComparable, IEquatable, ISpanFormattable, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
public readonly struct DateTimeOffset : IComparable, IComparable, IEquatable, IParsable, ISpanFormattable, ISpanParsable, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
public readonly struct DateTimeOffset : IComparable, IComparable, IEquatable, IParsable, ISpanFormattable, ISpanParsable, IUtf8SpanFormattable, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
public struct DateTimeOffset : IComparable, IComparable, IEquatable, IFormattable, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
[System.Serializable] public struct DateTimeOffset : IComparable, IComparable, IEquatable, IFormattable, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
type DateTimeOffset = struct interface IFormattable
type DateTimeOffset = struct interface IFormattable interface IDeserializationCallback interface ISerializable
type DateTimeOffset = struct interface ISpanFormattable interface IFormattable interface IDeserializationCallback interface ISerializable
type DateTimeOffset = struct interface IFormattable interface IParsable interface ISpanFormattable interface ISpanParsable interface IDeserializationCallback interface ISerializable
type DateTimeOffset = struct interface IFormattable interface IParsable interface ISpanFormattable interface ISpanParsable interface IDeserializationCallback interface ISerializable interface IUtf8SpanFormattable
[] type DateTimeOffset = struct interface IFormattable interface ISerializable interface IDeserializationCallback
Public Structure DateTimeOffset Implements IComparable, IComparable(Of DateTimeOffset), IEquatable(Of DateTimeOffset), IFormattable
Public Structure DateTimeOffset Implements IComparable, IComparable(Of DateTimeOffset), IDeserializationCallback, IEquatable(Of DateTimeOffset), IFormattable, ISerializable
Public Structure DateTimeOffset Implements IComparable, IComparable(Of DateTimeOffset), IDeserializationCallback, IEquatable(Of DateTimeOffset), ISerializable, ISpanFormattable
Public Structure DateTimeOffset Implements IComparable, IComparable(Of DateTimeOffset), IDeserializationCallback, IEquatable(Of DateTimeOffset), IParsable(Of DateTimeOffset), ISerializable, ISpanFormattable, ISpanParsable(Of DateTimeOffset)
Public Structure DateTimeOffset Implements IComparable, IComparable(Of DateTimeOffset), IDeserializationCallback, IEquatable(Of DateTimeOffset), IParsable(Of DateTimeOffset), ISerializable, ISpanFormattable, ISpanParsable(Of DateTimeOffset), IUtf8SpanFormattable
Наследование
DateTimeOffset
Реализации
Комментарии
Структура DateTimeOffset включает значение вместе со свойством Offset , которое определяет разницу между датой DateTime и временем текущего DateTimeOffset экземпляра и универсальным временем (UTC). Поскольку он точно определяет дату и время относительно UTC, DateTimeOffset структура не включает Kind член, как это делает структура DateTime . Он представляет даты и время со значениями в формате UTC в диапазоне от 12:00:00 полночь 1 января 0001 Года Анно Домини (общая эра) до 11:59:59:59 вечера, 31 декабря 9999 г. н.э. (C.E.).
Эры в японских календарях основаны на периодах царствования императоров. Таким образом, ожидается наступление новой эры. Например, 1 мая 2019 года в JapaneseCalendar и JapaneseLunisolarCalendar отмечено как начало эры Рэйва. Изменение эры затрагивает все приложения, использующие эти календари. Дополнительные сведения и определение того, затронуты ли ваши приложения, см. в статье Обработка новой эры в японском календаре в .NET. Сведения о тестировании приложений в системах Windows для обеспечения их готовности к изменению эпохи см. в статье Подготовка приложения к изменению японской эры. Сведения о функциях в .NET, поддерживающих календари с несколькими эрами, а также рекомендации по работе с календарями, поддерживающими несколько эпох, см. в статье Работа с эрами.
Компонент времени DateTimeOffset значения измеряется в 100-наносекундных единицах, называемых тактами, а конкретная дата — это количество тактов с 12:00 полуночи, 1 января 0001 г. н.э. (C.E.) в GregorianCalendar календаре. Значение DateTimeOffset всегда выражается в контексте явного календаря или календаря по умолчанию. Такты, относящиеся к високосным секундам, не включаются в общее количество тактов.
DateTimeOffset Хотя значение включает смещение, оно не является полностью структурой данных с учетом часового пояса. Хотя смещение от UTC является одной из характеристик часового пояса, оно не однозначно определяет часовой пояс. Не только несколько часовых поясов имеют одно и то же смещение от UTC, но смещение одного часового пояса изменяется, если наблюдается летнее время. Это означает, что, как DateTimeOffset только значение отсоединяется от часового пояса, его невозможно однозначно связать с исходным часовым поясом.
Так как DateTimeOffset является структурой, объект, объявленный DateTimeOffset , но не инициализированный в противном случае, содержит значения по умолчанию для каждого поля-члена. Это означает, что его DateTime свойству присвоено значение , DateTimeOffset.MinValue а свойству Offset — значение TimeSpan.Zero.
Вы можете создать новое DateTimeOffset значение, вызвав любые перегрузки конструктора, которые похожи на перегруженные конструкторы для DateTime структуры. Вы также можете создать новое DateTimeOffset значение, назначив ему DateTime значение . Это неявное преобразование; не требуется оператор приведения (в C#) или вызов метода преобразования (в Visual Basic). Можно также инициализировать DateTimeOffset значение из строкового представления даты и времени, вызвав ряд методов анализа статических строк, в том числе Parse, ParseExact, TryParseи TryParseExact.
Члены структуры предоставляют функциональные DateTimeOffset возможности в следующих областях:
-
Арифметика даты и времени. Вы можете сложить или вычесть даты или интервалы времени из определенного DateTimeOffset значения. Арифметические операции со значениями DateTimeOffset , в отличие от операций со значениями DateTime , корректируют разницу в смещениях времени при возврате результата. Например, следующий код использует DateTime переменные для вычитания текущего местного времени из текущего времени в формате UTC. Затем код использует DateTimeOffset переменные для выполнения той же операции. Вычитание со значениями DateTime возвращает разницу местного часового пояса от UTC, а вычитание со значениями DateTimeOffset возвращает TimeSpan.Zero.
using System; public class DateArithmetic < public static void Main() < DateTime date1, date2; DateTimeOffset dateOffset1, dateOffset2; TimeSpan difference; // Find difference between Date.Now and Date.UtcNow date1 = DateTime.Now; date2 = DateTime.UtcNow; difference = date1 - date2; Console.WriteLine("- = ", date1, date2, difference); // Find difference between Now and UtcNow using DateTimeOffset dateOffset1 = DateTimeOffset.Now; dateOffset2 = DateTimeOffset.UtcNow; difference = dateOffset1 - dateOffset2; Console.WriteLine(" - = ", dateOffset1, dateOffset2, difference); // If run in the Pacific Standard time zone on 4/2/2007, the example // displays the following output to the console: // 4/2/2007 7:23:57 PM - 4/3/2007 2:23:57 AM = -07:00:00 // 4/2/2007 7:23:57 PM -07:00 - 4/3/2007 2:23:57 AM +00:00 = 00:00:00 > >
open System // Find difference between Date.Now and Date.UtcNow let date1 = DateTime.Now let date2 = DateTime.UtcNow let difference1 = date1 - date2 printfn $" - = " // Find difference between Now and UtcNow using DateTimeOffset let dateOffset1 = DateTimeOffset.Now let dateOffset2 = DateTimeOffset.UtcNow let difference2 = dateOffset1 - dateOffset2 printfn $" - = " // If run in the Pacific Standard time zone on 1/7/2022, the example // displays the following output to the console: // 1/7/2022 6:45:10 PM - 1/8/2022 2:45:10 AM = -08:00:00.0072573 // 1/7/2022 6:45:10 PM -08:00 - 1/8/2022 2:45:10 AM +00:00 = -00:00:00.0000278
Module DateArithmetic Public Sub Main() Dim date1, date2 As Date Dim dateOffset1, dateOffset2 As DateTimeOffset Dim difference As TimeSpan ' Find difference between Date.Now and Date.UtcNow date1 = Date.Now date2 = Date.UtcNow difference = date1 - date2 Console.WriteLine(" - = ", date1, date2, difference) ' Find difference between Now and UtcNow using DateTimeOffset dateOffset1 = date.Now dateOffset2 = date.UtcNow difference = dateOffset1 - dateOffset2 Console.WriteLine(" - = ", _ dateOffset1, dateOffset2, difference) ' If run in the Pacific Standard time zone on 4/2/2007, the example ' displays the following output to the console: ' 4/2/2007 7:23:57 PM - 4/3/2007 2:23:57 AM = -07:00:00 ' 4/2/2007 7:23:57 PM -07:00 - 4/3/2007 2:23:57 AM +00:00 = 00:00:00 End Sub End Module
Если вы работаете со значением тактов, которое требуется преобразовать в другой интервал времени, например в минуты или секунды, для выполнения преобразования следует использовать TimeSpan.TicksPerDayконстанту , TimeSpan.TicksPerHour, TimeSpan.TicksPerMinute, TimeSpan.TicksPerSecond, или TimeSpan.TicksPerMillisecond . Например, чтобы добавить число секунд, представленных указанным числом тактов к Second компоненту DateTimeOffset значения, можно использовать выражение dateValue.Second + nTicks/Timespan.TicksPerSecond .
- Преобразование даты и времени. Можно преобразовать любое DateTimeOffset значение в другое DateTimeOffset значение, представляющее ту же точку времени в другом часовом поясе. Однако правила корректировки часового пояса применяются только в случае ToLocalTime метода , который преобразует DateTimeOffset значение в дату и время в зоне локальной системы.
- Сравнение даты и времени. Вы можете определить, является ли какое-либо конкретное DateTimeOffset значение ранее, таким же, как или позже, чем другое DateTimeOffset значение. Перед выполнением сравнения все значения преобразуются в формат UTC.
Конструкторы
Инициализирует новый экземпляр DateTimeOffset структуры, используя указанные date , time и offset .
Инициализирует новый экземпляр структуры DateTimeOffset с использованием заданного значения DateTime.
Инициализирует новый экземпляр структуры DateTimeOffset с использованием заданного значения DateTime и смещения.
Инициализирует новый экземпляр структуры DateTimeOffset, используя указанные год, месяц, день, час, минуту, секунду, миллисекунду и смещение для заданного календаря.
Инициализирует новый экземпляр DateTimeOffset структуры, используя указанные year , month , day , hour , minute , second , millisecond microsecond и offset .
Инициализирует новый экземпляр DateTimeOffset структуры, используя указанные year , month , day , hour , minute , second , millisecond microsecond и offset .
Инициализирует новый экземпляр структуры DateTimeOffset, используя указанные год, месяц, день, час, минуту, секунду, миллисекунду и смещение.
Инициализирует новый экземпляр структуры DateTimeOffset, используя указанный год, месяц, день, час, минуту, секунду и смещение.
Инициализирует новый экземпляр структуры DateTimeOffset с использованием заданного количества тактов и смещения.
Поля
Представляет максимально допустимое значение типа DateTimeOffset. Это поле доступно только для чтения.
Представляет наиболее раннее из возможных значений DateTimeOffset. Это поле доступно только для чтения.
Значение этой константы эквивалентно 00:00:00.0000000 UTC 1 января 1970 г. по григорианскому календарю. UnixEpoch определяет момент времени, в который значение времени в формате Unix равно 0.
Свойства
Получает значение DateTime, представляющее компонент даты в текущем объекте DateTimeOffset.
Получает значение DateTime, представляющее дату и время текущего объекта DateTimeOffset.
Возвращает день месяца, представленный текущим объектом DateTimeOffset.
Возвращает день недели, представленный текущим объектом DateTimeOffset.
Возвращает день года, представленный текущим объектом DateTimeOffset.
Возвращает часовой компонент, представленный текущим объектом DateTimeOffset.
Получает значение DateTime, представляющее местную дату и время в текущем объекте DateTimeOffset.
Возвращает микросекундный компонент времени, представленный текущим DateTimeOffset объектом .
Возвращает временной компонент миллисекунд, представленный текущим объектом DateTimeOffset.
Возвращает компонент минут, представленный текущим объектом DateTimeOffset.
Возвращает компонент месяца даты, представленный текущим объектом DateTimeOffset.
Возвращает наносекундный компонент времени, представленный текущим DateTimeOffset объектом .
Возвращает объект DateTimeOffset, для которого в качестве значения установлены текущие дата и время на текущем компьютере, а в качестве смещения — смещение местного времени от времени в формате UTC.
Возвращает смещение по времени от времени в формате UTC.
Возвращает компонент секунд по показаниям часов, представленный текущим объектом DateTimeOffset.
Возвращает количество тактов, представляющее местную дату и время в текущем объекте DateTimeOffset по показаниям часов.
Получает время суток текущего объекта DateTimeOffset.
Возвращает смещение времени от времени в формате UTC в минутах.
Получает значение DateTime, представляющее дату и время текущего объекта DateTimeOffset в формате UTC.
Возвращает объект DateTimeOffset, в качестве даты и времени которого установлены текущие дата и время в формате UTC, а в качестве смещения — значение Zero.
Возвращает количество тактов, которое представляет дату и время текущего объекта DateTimeOffset в формате UTC.
Возвращает компонент года даты, представленный текущим объектом DateTimeOffset.
Методы
Возвращает новый объект DateTimeOffset, добавляющий указанный интервал времени к значению этого экземпляра.
Возвращает новый объект DateTimeOffset, прибавляющий заданное количество полных и неполных дней к значению данного экземпляра.
Возвращает новый объект DateTimeOffset, добавляющий заданное количество полных и неполных часов к значению этого экземпляра.
Возвращает новый DateTimeOffset объект , который добавляет указанное число микросекунд к значению данного экземпляра.
Возвращает новый объект DateTimeOffset, прибавляющий заданное число миллисекунд к значению данного экземпляра.
Возвращает новый объект DateTimeOffset, прибавляющий заданное количество полных и неполных минут к значению данного экземпляра.
Возвращает новый объект DateTimeOffset, добавляющий заданное число месяцев к значению данного экземпляра.
Возвращает новый объект DateTimeOffset, прибавляющий заданное количество полных и неполных секунд к значению данного экземпляра.
Возвращает новый объект DateTimeOffset, прибавляющий заданное число тактов к значению этого экземпляра.
Возвращает новый объект DateTimeOffset, прибавляющий заданное число лет к значению этого экземпляра.
Сравнивает два объекта DateTimeOffset, и указывает, как соотносятся между собой указанные в них моменты времени: первый раньше второго, первый и второй равны, или же первый позже второго.
Сравнивает текущий объект DateTimeOffset с заданным объектом DateTimeOffset и указывает, когда наступает момент, заданный в первом объекте: раньше, позже или одновременно с моментом, указанным во втором объекте DateTimeOffset.
Определяет, представляет ли текущий объект DateTimeOffset тот же момент времени, что и заданный объект DateTimeOffset.
Определяет, представляют ли два заданных объекта DateTimeOffset один и тот же момент времени.
Определяет, представляет ли объект DateTimeOffset тот же момент времени, что и заданный объект.
Определяет, представляет ли текущий объект DateTimeOffset тот же момент времени, что и заданный объект DateTimeOffset и совпадают ли их смещения.
Преобразует заданную временную характеристику файла Windows в ее эквивалент по местному времени.
Преобразует время в формате Unix, выраженное как количество миллисекунд, истекших с 1970-01-01T00:00:00Z, в значение DateTimeOffset.
Преобразует время в формате Unix, выраженное как количество секунд, истекших с 1970-01-01T00:00:00Z, в значение DateTimeOffset.
Возвращает хэш-код для текущего объекта DateTimeOffset.
Анализирует диапазон символов в значение.
Преобразует заданное представление даты и времени в виде диапазона в его эквивалент DateTimeOffset, используя указанные сведения о формате для определенного языка и региональных параметров, а также указанный стиль форматирования.
Преобразует заданное строковое представление даты, времени и смещения в его эквивалент DateTimeOffset.
Преобразует заданное строковое представление даты и времени в его эквивалент DateTimeOffset, используя указанные сведения о форматировании, связанные с языком и региональными параметрами.
Преобразует заданное строковое представление даты и времени в его эквивалент DateTimeOffset, используя указанную информацию о форматировании, связанную с языком и региональными параметрами, а также заданный стиль форматирования.
Преобразует диапазон символов, отображающий дату и время, в его эквивалент DateTimeOffset, используя заданный формат, сведения о форматировании, связанные с языком и региональными параметрами, а также стиль. Формат отображения даты и времени должен полностью соответствовать заданному формату.
Преобразует диапазон символов, содержащий строковое представление даты и времени, в его эквивалент DateTimeOffset, используя заданные форматы, сведения о форматировании, связанные с языком и региональными параметрами, а также стиль. Формат представления даты и времени должен полностью соответствовать одному из заданных форматов.
Преобразует заданное строковое представление даты и времени в его эквивалент DateTimeOffset, используя указанные сведения о форматировании, связанные с языком и региональными параметрами. Формат строкового представления должен полностью соответствовать заданному формату.
Преобразует заданное строковое представление даты и времени в его эквивалент DateTimeOffset, используя заданный формат, указанные сведения о форматировании, связанные с языком и региональными параметрами, а также стиль. Формат строкового представления должен полностью соответствовать заданному формату.
Преобразует заданное строковое представление даты и времени в его эквивалент DateTimeOffset, используя заданные форматы, сведения о форматировании, связанные с языком и региональными параметрами, а также стиль. Формат строкового представления должен полностью соответствовать одному из заданных форматов.
Вычитает значение DateTimeOffset, представляющее определенную дату и время, из текущего объекта DateTimeOffset.
Вычитает указанный интервал времени из текущего объекта DateTimeOffset.
Преобразует значение текущего объекта DateTimeOffset во временную характеристику файла Windows.
Преобразует текущий объект DateTimeOffset в объект DateTimeOffset, представляющий местное время.
Преобразует значение текущего объекта DateTimeOffset в дату и время, указанные в значении смещения.
Преобразует значение текущего объекта DateTimeOffset в эквивалентное ему строковое представление.
Преобразует числовое значение текущего объекта DateTimeOffset в эквивалентное ему строковое представление с использованием указанных сведений об особенностях форматирования для данного языка и региональных параметров.
Преобразует значение текущего объекта DateTimeOffset в эквивалентное ему строковое представление с использованием заданного формата.
Преобразует значение текущего объекта DateTimeOffset в эквивалентное ему строковое представление с использованием указанного формата и сведений об особенностях формата для данного языка и региональных параметров.
Преобразует текущий объект DateTimeOffset в значение DateTimeOffset, представляющее время в формате UTC.
Возвращает количество миллисекунд, истекших с 1970-01-01T00:00:00.000Z.
Возвращает количество секунд, истекших с 1970-01-01T00:00:00Z.
Пытается отформатировать значение текущего экземпляра как UTF-8 в предоставленный диапазон байтов.
Пытается отформатировать значение текущего экземпляра смещения даты и времени в указанный диапазон символов.
Пытается преобразовать указанное представление даты и времени в виде диапазона в его эквивалент типа DateTimeOffset и возвращает значение, которое указывает на то, успешно ли выполнено преобразование.
Пытается проанализировать диапазон символов в значение.
Пытается преобразовать указанное представление даты и времени в виде диапазона в его эквивалент типа DateTimeOffset и возвращает значение, которое указывает на то, успешно ли выполнено преобразование.
Предпринимает попытку преобразования указанного строкового представления даты и времени в его эквивалент DateTimeOffset и возвращает значение, позволяющее определить успешность преобразования.
Пытается проанализировать строку в значение.
Предпринимает попытку преобразования указанного строкового представления даты и времени в его эквивалент DateTimeOffset и возвращает значение, позволяющее определить успешность преобразования.
Преобразует представление даты и времени в диапазоне символов в его эквивалент DateTimeOffset, используя заданный формат, сведения о форматировании, связанные с языком и региональными параметрами, а также стиль. Формат отображения даты и времени должен полностью соответствовать заданному формату.
Преобразует представление даты и времени в диапазоне символов в его эквивалент типа DateTimeOffset, используя указанные форматы, сведения о форматировании для определенного языка и региональных параметров, а также стиль. Формат представления даты и времени должен полностью соответствовать одному из заданных форматов.
Преобразует заданное строковое представление даты и времени в его эквивалент DateTimeOffset, используя заданный формат, указанные сведения о форматировании, связанные с языком и региональными параметрами, а также стиль. Формат строкового представления должен полностью соответствовать заданному формату.
Преобразует заданное строковое представление даты и времени в его эквивалент DateTimeOffset, используя заданный массив форматов, указанные сведения о форматировании, связанные с языком и региональными параметрами, и стиль форматирования. Формат строкового представления должен полностью соответствовать одному из заданных форматов.
Операторы
Добавляет указанный интервал времени в объект DateTimeOffset, имеющий заданную дату и время, и образует объект DateTimeOffset с новыми значениями даты и времени.
Определяет, представляют ли два заданных объекта DateTimeOffset один и тот же момент времени.
Определяет, больше ли (или меньше) значение одного указанного объекта DateTimeOffset значения другого указанного объекта DateTimeOffset.
Определяет, действительно ли значение одного указанного объекта DateTimeOffset больше или равно значению другого указанного объекта DateTimeOffset.
Определяется неявное преобразование объекта DateTime в объект DateTimeOffset.
Определяет, указывают ли два заданных объекта DateTimeOffset на разные моменты времени.
Определяет, меньше ли значение одного указанного объекта DateTimeOffset, чем значение другого указанного объекта DateTimeOffset.
Определяет, меньше ли значение одного указанного объекта DateTimeOffset, чем значение другого указанного объекта DateTimeOffset.
Вычитает объект DateTimeOffset из другого объекта и выдает интервал времени.
Вычитает заданный временной интервал из указанной даты и времени и выдает новую дату и время.
Явные реализации интерфейса
Сравнивает значение текущего объекта DateTimeOffset с другим объектом такого же типа.
Выполняется после завершения десериализации объекта.
Передает объекту SerializationInfo данные, необходимые для сериализации текущего объекта DateTimeOffset.