DateTime DateTime DateTime DateTime Struct

Определение

Представляет текущее время, обычно выраженное как дата и время суток. Represents an instant in time, typically expressed as a date and time of day.

public value class DateTime : IComparable, IComparable<DateTime>, IConvertible, IEquatable<DateTime>, IFormattable, System::Runtime::Serialization::ISerializable
[Serializable]
public struct DateTime : IComparable, IComparable<DateTime>, IConvertible, IEquatable<DateTime>, IFormattable, System.Runtime.Serialization.ISerializable
type DateTime = struct
    interface IFormattable
    interface IConvertible
    interface ISerializable
Public Structure DateTime
Implements IComparable, IComparable(Of DateTime), IConvertible, IEquatable(Of DateTime), IFormattable, ISerializable
Наследование
Атрибуты
SerializableAttribute
Реализации

Комментарии

Примечание

Примеры C# в этой статье выполняются во встроенном средстве выполнения кода и на площадке Try.NET.The C# examples in this article run in the Try.NET inline code runner and playground. Нажмите на кнопку Выполнить, чтобы выполнить пример в интерактивном окне.Select the Run button to run an example in an interactive window. После выполнения кода вы можете изменить его и выполнить измененный код, снова нажав на кнопку Выполнить.Once you execute the code, you can modify it and run the modified code by selecting Run again. Либо в интерактивном окне выполняется измененный код, либо, если компиляция завершается с ошибкой, в интерактивном окне отображаются все сообщения об ошибках компилятора C#.The modified code either runs in the interactive window or, if compilation fails, the interactive window displays all C# compiler error messages.

Местный часовой пояс площадки и средства запуска встроенного кода Try.NET указан в формате UTC.The local time zone of the Try.NET inline code runner and playground is Coordinated Universal Time, or UTC. Это может повлиять на работу и выходные данные примеров, иллюстрирующих DateTime, DateTimeOffset, типы TimeZoneInfo и их члены.This may affect the behavior and the output of examples that illustrate the DateTime, DateTimeOffset, and TimeZoneInfo types and their members.

Эта статья содержит примеры использования DateTime типа:This article includes several examples that use the DateTime type:

Примеры инициализации Initialization Examples
Конструктор вызывается Invoke a constructor
Вызвать конструктор по умолчанию Invoke the implicit default constructor
Назначение на основе возвращаемого значения Assignment from return value
Синтаксический анализ строковое представление даты и времени Parsing a string that represents a date and time
Синтаксис Visual Basic для инициализации даты и времениVisual Basic syntax to initialize a date and time

Форматирование DateTime объектов в виде строкFormatting DateTime objects as strings
Используйте этот формат времени по умолчанию Use the default date time format
Форматирование даты и времени с помощью определенного языка и региональных параметров Format a date and time using a specific culture
Формат даты-времени, используя строку стандартного или настраиваемого формата Format a date time using a standard or custom format string
Укажите строку формата и определенного языка и региональных параметров Specify both a format string and a specific culture
Формат даты-времени, по стандарту ISO 8601 для веб-службFormat a date time using the ISO 8601 standard for web services

Синтаксический анализ строки как DateTime объектовParsing strings as DateTime objects
Используйте Parse или TryParse для преобразования строки даты и времени Use Parse or TryParse to convert a string to a date and time
Используйте ParseExact или TryParseExact для преобразования строки в известном формате Use ParseExact or TryParseExact to convert a string in a known format
Преобразование из строкового представления ISO 8601 для даты и времениConvert from the ISO 8601 string representation to a date and time

DateTime РазрешениеDateTime resolution
Изучение разрешения значений даты и времени Explore the resolution of date and time values
Сравнение на равенство в пределах допуска.Comparing for equality within a tolerance

Язык и региональные параметры и календариCulture and calendars
Показе значений даты и времени, используя язык и региональные параметры конкретного календари Display date and time values using culture specific calendars
Синтаксический анализ строки в соответствии с календаре конкретного языка и региональных параметров Parse strings according to a culture specific calendar
Инициализировать даты и времени из календаря для конкретного языка и региональных параметров Initialize a date and time from a specific culture's calendar
Доступ к свойствам даты и времени, с помощью календаря для конкретного языка и региональных параметров Accessing date and time properties using a specific culture's calendar
Получение недели года, с помощью календарей конкретного языка и региональных параметровRetrieving the week of the year using culture specific calendars

СохраняемостьPersistence
Сохранение значений даты и времени, как строки в местном часовом поясе Persisting date and time values as strings in the local time zone
Сохранение значений даты и времени, как строки в виде инвариантного языка и региональных параметров и времени Persisting date and time values as strings in a culture and time invariant format
Сохранение значений даты и времени, как целые числа Persisting date and time values as integers
Сохранение даты и времени значения, с помощью XmlSerializer Persisting date and time values using the XmlSerializer
Сохранение даты и времени значения, с помощью BinaryFormatter Persisting date and time values using the BinaryFormatter
Сохранение значений даты и времени с данными часового поясаPersisting date and time values with time zone data

Этот раздел содержит разделы о наиболее распространенных случаев использования DateTime структуры:This section contains topics for many common uses of the DateTime struct:

Инициализация DateTime объекта Initializing a DateTime object
Значения даты и времени и их строковые представления DateTime values and their string representations
Синтаксический анализ значения даты и времени из строк Parsing DateTime values from strings
Значения даты и времени DateTime values
Операции даты и времени DateTime operations
Разрешение даты и времени DateTime resolution
Значения даты и времени и календарей DateTime values and calendars
Сохранение значения даты и времени Persisting DateTime values
Vs даты и времени. интервал времени DateTime vs. TimeSpan
Сравнение на равенство в пределах допуска вопросы COM-взаимодействияComparing for equality within tolerance COM interop considerations

DateTime Тип значения представляет дату и время в диапазоне от 00:00:00 (полночь), 1 января 0001 года (нашей эры) до 23:59:59, 31 декабря 9999 года нашей эры.The DateTime value type represents dates and times with values ranging from 00:00:00 (midnight), January 1, 0001 Anno Domini (Common Era) through 11:59:59 P.M., December 31, 9999 A.D. (C.E.) по григорианскому календарю.(C.E.) in the Gregorian calendar.

Значения времени измеряются в единицах 100-наносекундных тактов вызывается.Time values are measured in 100-nanosecond units called ticks. Точная Дата представляется количество тактов с 00:00 1 января 0001 года нашей эры.A particular date is the number of ticks since 12:00 midnight, January 1, 0001 A.D. (C.E.) в GregorianCalendar календаря.(C.E.) in the GregorianCalendar calendar. Номер исключает тактов, можно добиться путем корректировочных секунд.The number excludes ticks that would be added by leap seconds. Например значение тактов 31241376000000000L представляет дату Пятница, 1 января, 0100 12:00:00 (полночь).For example, a ticks value of 31241376000000000L represents the date Friday, January 01, 0100 12:00:00 midnight. Объект DateTime всегда выражается в контексте явно или календарь по умолчанию.A DateTime value is always expressed in the context of an explicit or default calendar.

Примечание

Если вы работаете со значением тактов, что вы хотите преобразовать в другой интервал времени, например минут или секунд, следует использовать TimeSpan.TicksPerDay, TimeSpan.TicksPerHour, TimeSpan.TicksPerMinute, TimeSpan.TicksPerSecond, или TimeSpan.TicksPerMillisecond константу, чтобы выполнить преобразование.If you are working with a ticks value that you want to convert to some other time interval, such as minutes or seconds, you should use the TimeSpan.TicksPerDay, TimeSpan.TicksPerHour, TimeSpan.TicksPerMinute, TimeSpan.TicksPerSecond, or TimeSpan.TicksPerMillisecond constant to perform the conversion. Например, добавить время в секундах, представленные на указанное число тактов к Second компонент DateTime значение, можно использовать выражение dateValue.Second + nTicks/Timespan.TicksPerSecond.For example, to add the number of seconds represented by a specified number of ticks to the Second component of a DateTime value, you can use the expression dateValue.Second + nTicks/Timespan.TicksPerSecond.

Источник для всего набора примеров из этой статьи можно просмотреть в любом Visual Basic или C# из репозитории docs в GitHub.You can view the source for the entire set of examples from this article in either Visual Basic or C# from the docs repository on GitHub.

Примечание

Альтернативой DateTime структуры для работы со значениями даты и времени в частности часовых поясов — DateTimeOffset структуры.An alternative to the DateTime structure for working with date and time values in particular time zones is the DateTimeOffset structure. DateTimeOffset Структура сохраняет сведения о дате и времени в частной DateTime поля и количество минут, по которым, Дата и время отличается от времени UTC в частной Int16 поля.The DateTimeOffset structure stores date and time information in a private DateTime field and the number of minutes by which that date and time differs from UTC in a private Int16 field. Это делает возможным для DateTimeOffset значение на требуемое время в заданном часовом поясе, тогда как DateTime значение может однозначно представлять только временем UTC и временем местного часового пояса.This makes it possible for a DateTimeOffset value to reflect the time in a particular time zone, whereas a DateTime value can unambiguously reflect only UTC and the local time zone's time. Сведения о необходимости использования DateTime структуры или DateTimeOffset структуры при работе со значениями даты и времени, см. в разделе Выбор между типами DateTime, DateTimeOffset, TimeSpan и TimeZoneInfo.For a discussion about when to use the DateTime structure or the DateTimeOffset structure when working with date and time values, see Choosing Between DateTime, DateTimeOffset, TimeSpan, and TimeZoneInfo.

Инициализация объекта DateTimeInitializing a DateTime object

Можно назначить начальное значение новый DateTime значение различными способами:You can assign an initial value to a new DateTime value in many different ways:

  • Вызов конструктора, либо один, где указать аргументы для значения, или используется неявный конструктор по умолчанию.Calling a constructor, either one where you specify arguments for values, or use the implicit default constructor.
  • Назначение DateTime к возвращаемому значению свойства или метода.Assigning a DateTime to the return value of a property or method.
  • Синтаксический анализ DateTime значение из строкового представления.Parsing a DateTime value from its string representation.
  • С помощью функций языка Visual Basic для создания экземпляра DateTime.Using Visual Basic specific language features to instantiate a DateTime.

В следующих фрагментах кода показаны примеры каждого из них:The following code snippets show examples of each:

Вызывать конструкторыInvoke Constructors

Можно вызывать любые перегрузки DateTime конструктора, укажите элементы, значения даты и времени (например, год, месяц и день месяца или число тактов).You call any of the overloads of the DateTime constructor that specify elements of the date and time value (such as the year, month, and day, or the number of ticks). В следующем коде создается в определенную дату с помощью DateTime конструктор, указав в год, месяц, день, час, минуту и секунду.The following code creates a specific date using the DateTime constructor specifying the year, month, day, hour, minute, and second.

Dim date1 As New Date(2008, 5, 1, 8, 30, 52)
DateTime date1 = new DateTime(2008, 5, 1, 8, 30, 52);
Console.WriteLine(date1);

Вы вызываете DateTime структуры неявный конструктор по умолчанию при необходимости DateTime равным значению по умолчанию.You invoke the DateTime structure's implicit default constructor when you want a DateTime initialized to its default value. (Дополнительные сведения о неявный конструктор по умолчанию для типа значения, см. в разделе типы значений.) Некоторые компиляторы также поддерживает объявление DateTime значение без явно присвоить значение.(For details on the implicit default constructor of a value type, see Value Types.) Some compilers also support declaring a DateTime value without explicitly assigning a value to it. Создание значения без явную инициализацию также приводит значение по умолчанию.Creating a value without an explicit initialization also results in the default value. В следующем примере показано DateTime неявный конструктор по умолчанию в C# и Visual Basic, а также через DateTime объявления без назначения в Visual Basic.The following example illustrates the DateTime implicit default constructor in C# and Visual Basic, as well as a DateTime declaration without assignment in Visual Basic.

Dim dat1 As DateTime
' The following method call displays 1/1/0001 12:00:00 AM.
Console.WriteLine(dat1.ToString(System.Globalization.CultureInfo.InvariantCulture))
' The following method call displays True.
Console.WriteLine(dat1.Equals(Date.MinValue))

Dim dat2 As New DateTime()
' The following method call displays 1/1/0001 12:00:00 AM.
Console.WriteLine(dat2.ToString(System.Globalization.CultureInfo.InvariantCulture))
' The following method call displays True.
Console.WriteLine(dat2.Equals(Date.MinValue))
DateTime dat1 = new DateTime();
// The following method call displays 1/1/0001 12:00:00 AM.
Console.WriteLine(dat1.ToString(System.Globalization.CultureInfo.InvariantCulture));
// The following method call displays True.
Console.WriteLine(dat1.Equals(DateTime.MinValue));

Назначение вычисляемое значениеAssigning a computed value

Вы можете назначить DateTime значение даты и времени, возвращенные свойства или метода объекта.You can assign the DateTime object a date and time value returned by a property or method. В следующем примере присваивается текущую дату и время, даты в формате UTC (UTC) и времени и даты до трех новых DateTime переменные.The following example assigns the current date and time, the current Coordinated Universal Time (UTC) date and time, and the current date to three new DateTime variables.

Dim date1 As Date = Date.Now
Dim date2 As Date = Date.UtcNow
Dim date3 As Date = Date.Today
DateTime date1 = DateTime.Now;
DateTime date2 = DateTime.UtcNow;
DateTime date3 = DateTime.Today;

Синтаксический анализ строковое представление даты и времениParsing a string that represents a DateTime

Parse, ParseExact, TryParse, И TryParseExact все методы преобразования строки в его эквивалентное значение даты и времени.The Parse, ParseExact, TryParse, and TryParseExact methods all convert a string to its equivalent date and time value. В следующих примерах используется Parse и ParseExact методы для разбора строки и преобразовать его в DateTime значение.The following examples use the Parse and ParseExact methods to parse a string and convert it to a DateTime value. Второй формат используется форма поддерживаемых ISO 8601 стандарт для представления даты и времени в формате строки.The second format uses a form supported by the ISO 8601 standard for a representing date and time in string format. Это стандартное представление часто используется для передачи данных в веб-службах.This standard representation is often used to transfer date information in web services.

Dim dateString As String = "5/1/2008 8:30:52 AM"
Dim date1 As Date = Date.Parse(dateString,
                       System.Globalization.CultureInfo.InvariantCulture)
Dim iso8601String As String = "20080501T08:30:52Z"
Dim dateISO8602 As Date = DateTime.ParseExact(iso8601String, "yyyyMMddTHH:mm:ssZ",
                              System.Globalization.CultureInfo.InvariantCulture)
Console.WriteLine(dateISO8602)

string dateString = "5/1/2008 8:30:52 AM";
DateTime date1 = DateTime.Parse(dateString,
                          System.Globalization.CultureInfo.InvariantCulture);
string iso8601String = "20080501T08:30:52Z";
DateTime dateISO8602 = DateTime.ParseExact(iso8601String, "yyyyMMddTHH:mm:ssZ",
                                System.Globalization.CultureInfo.InvariantCulture);

TryParse И TryParseExact методы указывают, является ли строка допустимым представлением DateTime значение и, если это так, выполняет преобразование.The TryParse and TryParseExact methods indicate whether a string is a valid representation of a DateTime value and, if it is, performs the conversion.

Синтаксис конкретного языка Visual BasicLanguage-specific syntax for Visual Basic

Следующая инструкция Visual Basic инициализирует новую DateTime значение.The following Visual Basic statement initializes a new DateTime value.

Dim date1 As Date = #5/1/2008 8:30:52AM#

Значения даты и времени и их строковые представленияDateTime values and their string representations

На внутреннем уровне все DateTime значения представляются как число тактов (количество 100-наносекундных интервалов), прошедших после полуночи в 12:00:00, 1 января 0001 г.Internally, all DateTime values are represented as the number of ticks (the number of 100-nanosecond intervals) that have elapsed since 12:00:00 midnight, January 1, 0001. Фактический DateTime значение не зависит от того, в котором отображается это значение при отображении.The actual DateTime value is independent of the way in which that value appears when displayed. Внешний вид DateTime значение является результатом операции форматирования, который преобразует значение в строковое представление.The appearance of a DateTime value is the result of a formatting operation that converts a value to its string representation.

Внешний вид значений даты и времени зависит от языка и региональных параметров, международные стандарты, требования приложений и личных предпочтений.The appearance of date and time values is dependent on culture, international standards, application requirements, and personal preference. DateTime Структура обеспечивает гибкость при форматировании значений даты и времени путем перегрузки ToString.The DateTime structure offers flexibility in formatting date and time values through overloads of ToString. Значение по умолчанию DateTime.ToString() метод возвращает строковое представление значения даты и времени, с помощью короткого формата даты и длинный формат времени текущего языка и региональных параметров.The default DateTime.ToString() method returns the string representation of a date and time value using the current culture's short date and long time pattern. В следующем примере используется значение по умолчанию DateTime.ToString() метод.The following example uses the default DateTime.ToString() method. Он отображает дату и время, с помощью короткого формата даты и длинный формат времени для текущего языка и региональных параметров.It displays the date and time using the short date and long time pattern for the current culture. Язык и региональные параметры en US является текущего языка и региональных параметров на компьютере, на котором был выполнен пример.The en-US culture is the current culture on the computer on which the example was run.

DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
Console.WriteLine(date1.ToString());
// For en-US culture, displays 3/1/2008 7:00:00 AM
Dim date1 As Date = #3/1/2008 7:00AM#
Console.WriteLine(date1.ToString())
' For en-US culture, displays 3/1/2008 7:00:00 AM

Может потребоваться форматирование дат в конкретном языке для поддержки веб-сценариев, где сервер может быть на другом языке от клиента.You may need to format dates in a specific culture to support web scenarios where the server may be in a different culture from the client. Укажите язык и региональные параметры с помощью DateTime.ToString(IFormatProvider) метод для создания короткого формата даты и длинное представление времени в конкретном языке.You specify the culture using the DateTime.ToString(IFormatProvider) method to create the short date and long time representation in a specific culture. В следующем примере используется DateTime.ToString(IFormatProvider) метод для отображения даты и времени с помощью короткого формата даты и длинный формат времени для региональных параметров fr-FR.The following example uses the DateTime.ToString(IFormatProvider) method to display the date and time using the short date and long time pattern for the fr-FR culture.

DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
Console.WriteLine(date1.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays 01/03/2008 07:00:00
Dim date1 As Date = #3/1/2008 7:00AM#
Console.WriteLine(date1.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays 01/03/2008 07:00:00

Другие приложения могут требовать различные строковые представления значений даты.Other applications may require different string representations of a date. DateTime.ToString(String) Метод возвращает строковое представление, определенные с помощью соглашений о форматировании текущего языка и региональных параметров спецификатор стандартного или настраиваемого формата.The DateTime.ToString(String) method returns the string representation defined by a standard or custom format specifier using the formatting conventions of the current culture. В следующем примере используется DateTime.ToString(String) метод для отображения полный шаблон даты и времени для en US язык и региональные параметры, текущего языка и региональных параметров на компьютере, на котором был выполнен пример.The following example uses the DateTime.ToString(String) method to display the full date and time pattern for the en-US culture, the current culture on the computer on which the example was run.

DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
Console.WriteLine(date1.ToString("F"));
// Displays Saturday, March 01, 2008 7:00:00 AM
Dim date1 As Date = #3/1/2008 7:00AM#
Console.WriteLine(date1.ToString("F"))
' Displays Saturday, March 01, 2008 7:00:00 AM

Наконец, можно указать язык и региональные параметры и формат с помощью DateTime.ToString(String, IFormatProvider) метод.Finally, you can specify both the culture and the format using the DateTime.ToString(String, IFormatProvider) method. В следующем примере используется DateTime.ToString(String, IFormatProvider) метод для отображения полный шаблон даты и времени для региональных параметров fr-FR.The following example uses the DateTime.ToString(String, IFormatProvider) method to display the full date and time pattern for the fr-FR culture.

DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
Console.WriteLine(date1.ToString("F", new System.Globalization.CultureInfo("fr-FR")));
// Displays samedi 1 mars 2008 07:00:00
Dim date1 As Date = #3/1/2008 7:00AM#
Console.WriteLine(date1.ToString("F", New System.Globalization.CultureInfo("fr-FR")))
' Displays samedi 1 mars 2008 07:00:00

DateTime.ToString(String) Перегрузка может также использоваться со строкой пользовательского формата для указания других форматов.The DateTime.ToString(String) overload can also be used with a custom format string to specify other formats. Следующий пример показывает способ форматирования строки с помощью ISO 8601 стандартного формата, часто используется для веб-служб.The following example shows how to format a string using the ISO 8601 standard format often used for web services. Формат Iso 8601 не имеет соответствующей строки стандартного формата.The Iso 8601 format does not have a corresponding standard format string.

DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
Console.WriteLine(date1.ToString("yyyyMMddTHH:mm:ssZ"));
// Displays 20080301T07:00:00Z
Dim date1 As Date = #3/1/2008 7:00AM#
Console.WriteLine(date1.ToString("yyyyMMddTHH:mm:ssZ"))
' Displays 20080301T07:00:00Z

Дополнительные сведения о форматировании DateTime значения, см. в разделе Standard Date и Time Format Strings и Custom Date и Time Format Strings.For more information about formatting DateTime values, see Standard Date and Time Format Strings and Custom Date and Time Format Strings.

Синтаксический анализ значения даты и времени из строкParsing DateTime values from strings

Анализ Преобразует строковое представление даты и времени в DateTime значение.Parsing converts the string representation of a date and time to a DateTime value. Как правило строки даты и времени, имеют два различных способа использования в приложениях:Typically, date and time strings have two different usages in applications:

  • Дата и время принимает различные формы и отражающего правила для конкретной культуры или текущего языка и региональных параметров.A date and time takes a variety of forms and reflects the conventions of either the current culture or a specific culture. Например приложение позволяет пользователю, которого текущий язык — en US, входные значения даты в виде «12/15/2013» или «15 декабря 2013 г.".For example, an application allows a user whose current culture is en-US to input a date value as "12/15/2013" or "December 15, 2013". Благодаря этому пользователь, которого текущий язык — en-gb, входные значения даты в виде «12/15/2013» или «15 декабря 2013 г.»It allows a user whose current culture is en-gb to input a date value as "15/12/2013" or "15 December 2013."

  • Дата и время представляется в предопределенном формате.A date and time is represented in a predefined format. Например приложение сериализует дату в виде «20130103» независимо от языка и региональных параметров, на котором выполняется приложение.For example, an application serializes a date as "20130103" independently of the culture on which the app is running. Приложению могут потребоваться даты вводиться в формате короткой даты текущего языка и региональных параметров.An application may require dates be input in the current culture's short date format.

Использовании Parse или TryParse метод для преобразования строки из одного из стандартных форматов даты и времени, языка и региональных параметров для DateTime значение.You use the Parse or TryParse method to convert a string from one of the common date and time formats used by a culture to a DateTime value. В следующем примере показано, как можно использовать TryParse для преобразования строки даты в разных форматов, зависящих от языка и региональных параметров для DateTime значение.The following example shows how you can use TryParse to convert date strings in different culture-specific formats to a DateTime value. Он сменит текущий язык на английский (Соединенное Королевство) и вызывает GetDateTimeFormats() метод для создания массива строк даты и времени.It changes the current culture to English (Great Britain) and calls the GetDateTimeFormats() method to generate an array of date and time strings. Затем он передает каждого элемента массива TryParse метод.It then passes each element in the array to the TryParse method. Выходные данные из примера показывают, что метод синтаксического анализа смог успешно преобразовать каждый из региональных строки даты и времени.The output from the example shows the parsing method was able to successfully convert each of the culture-specific date and time strings.

System.Threading.Thread.CurrentThread.CurrentCulture = 
    System.Globalization.CultureInfo.CreateSpecificCulture("en-GB");

DateTime date1 = new DateTime(2013, 6, 1, 12, 32, 30);
List<string> badFormats = new List<String>();

Console.WriteLine($"{"Date String",-37} {"Date",-19}\n");
foreach (var dateString in date1.GetDateTimeFormats())
{
    DateTime parsedDate;
    if (DateTime.TryParse(dateString, out parsedDate))
        Console.WriteLine($"{dateString,-37} {DateTime.Parse(dateString),-19}");
    else
        badFormats.Add(dateString);
}

// Display strings that could not be parsed.
if (badFormats.Count > 0)
{
    Console.WriteLine("\nStrings that could not be parsed: ");
    foreach (var badFormat in badFormats)
        Console.WriteLine($"   {badFormat}");
}
// Press "Run" to see the output
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB")

Dim date1 As DateTime = New DateTime(2013, 6, 1, 12, 32, 30)
Dim badFormats As New List(Of String)

Console.WriteLine($"{"Date String",-37} {"Date",-19}")
Console.WriteLine()
For Each dateString As String In date1.GetDateTimeFormats()
    Dim parsedDate As DateTime
    If DateTime.TryParse(dateString, parsedDate) Then
        Console.WriteLine($"{dateString,-37} {DateTime.Parse(dateString),-19:g}")
    Else
        badFormats.Add(dateString)
    End If
Next

' Display strings that could not be parsed.
If badFormats.Count > 0 Then
    Console.WriteLine()
    Console.WriteLine("Strings that could not be parsed: ")
    For Each badFormat In badFormats
        Console.WriteLine($"   {badFormat}")
    Next
End If
' The example displays the following output:
'       Date String                           Date               
'       
'       01/06/2013                            01/06/2013 00:00:00
'       01/06/13                              01/06/2013 00:00:00
'       1/6/13                                01/06/2013 00:00:00
'       1.6.13                                01/06/2013 00:00:00
'       2013-06-01                            01/06/2013 00:00:00
'       01 June 2013                          01/06/2013 00:00:00
'       1 June 2013                           01/06/2013 00:00:00
'       01 June 2013 12:32                    01/06/2013 12:32:00
'       01 June 2013 12:32                    01/06/2013 12:32:00
'       01 June 2013 12:32 PM                 01/06/2013 12:32:00
'       01 June 2013 12:32 PM                 01/06/2013 12:32:00
'       1 June 2013 12:32                     01/06/2013 12:32:00
'       1 June 2013 12:32                     01/06/2013 12:32:00
'       1 June 2013 12:32 PM                  01/06/2013 12:32:00
'       1 June 2013 12:32 PM                  01/06/2013 12:32:00
'       01 June 2013 12:32:30                 01/06/2013 12:32:30
'       01 June 2013 12:32:30                 01/06/2013 12:32:30
'       01 June 2013 12:32:30 PM              01/06/2013 12:32:30
'       01 June 2013 12:32:30 PM              01/06/2013 12:32:30
'       1 June 2013 12:32:30                  01/06/2013 12:32:30
'       1 June 2013 12:32:30                  01/06/2013 12:32:30
'       1 June 2013 12:32:30 PM               01/06/2013 12:32:30
'       1 June 2013 12:32:30 PM               01/06/2013 12:32:30
'       01/06/2013 12:32                      01/06/2013 12:32:00
'       01/06/2013 12:32                      01/06/2013 12:32:00
'       01/06/2013 12:32 PM                   01/06/2013 12:32:00
'       01/06/2013 12:32 PM                   01/06/2013 12:32:00
'       01/06/13 12:32                        01/06/2013 12:32:00
'       01/06/13 12:32                        01/06/2013 12:32:00
'       01/06/13 12:32 PM                     01/06/2013 12:32:00
'       01/06/13 12:32 PM                     01/06/2013 12:32:00
'       1/6/13 12:32                          01/06/2013 12:32:00
'       1/6/13 12:32                          01/06/2013 12:32:00
'       1/6/13 12:32 PM                       01/06/2013 12:32:00
'       1/6/13 12:32 PM                       01/06/2013 12:32:00
'       1.6.13 12:32                          01/06/2013 12:32:00
'       1.6.13 12:32                          01/06/2013 12:32:00
'       1.6.13 12:32 PM                       01/06/2013 12:32:00
'       1.6.13 12:32 PM                       01/06/2013 12:32:00
'       2013-06-01 12:32                      01/06/2013 12:32:00
'       2013-06-01 12:32                      01/06/2013 12:32:00
'       2013-06-01 12:32 PM                   01/06/2013 12:32:00
'       2013-06-01 12:32 PM                   01/06/2013 12:32:00
'       01/06/2013 12:32:30                   01/06/2013 12:32:30
'       01/06/2013 12:32:30                   01/06/2013 12:32:30
'       01/06/2013 12:32:30 PM                01/06/2013 12:32:30
'       01/06/2013 12:32:30 PM                01/06/2013 12:32:30
'       01/06/13 12:32:30                     01/06/2013 12:32:30
'       01/06/13 12:32:30                     01/06/2013 12:32:30
'       01/06/13 12:32:30 PM                  01/06/2013 12:32:30
'       01/06/13 12:32:30 PM                  01/06/2013 12:32:30
'       1/6/13 12:32:30                       01/06/2013 12:32:30
'       1/6/13 12:32:30                       01/06/2013 12:32:30
'       1/6/13 12:32:30 PM                    01/06/2013 12:32:30
'       1/6/13 12:32:30 PM                    01/06/2013 12:32:30
'       1.6.13 12:32:30                       01/06/2013 12:32:30
'       1.6.13 12:32:30                       01/06/2013 12:32:30
'       1.6.13 12:32:30 PM                    01/06/2013 12:32:30
'       1.6.13 12:32:30 PM                    01/06/2013 12:32:30
'       2013-06-01 12:32:30                   01/06/2013 12:32:30
'       2013-06-01 12:32:30                   01/06/2013 12:32:30
'       2013-06-01 12:32:30 PM                01/06/2013 12:32:30
'       2013-06-01 12:32:30 PM                01/06/2013 12:32:30
'       01 June                               01/06/2013 00:00:00
'       01 June                               01/06/2013 00:00:00
'       2013-06-01T12:32:30.0000000           01/06/2013 12:32:30
'       2013-06-01T12:32:30.0000000           01/06/2013 12:32:30
'       Sat, 01 Jun 2013 12:32:30 GMT         01/06/2013 05:32:30
'       Sat, 01 Jun 2013 12:32:30 GMT         01/06/2013 05:32:30
'       2013-06-01T12:32:30                   01/06/2013 12:32:30
'       12:32                                 22/04/2013 12:32:00
'       12:32                                 22/04/2013 12:32:00
'       12:32 PM                              22/04/2013 12:32:00
'       12:32 PM                              22/04/2013 12:32:00
'       12:32:30                              22/04/2013 12:32:30
'       12:32:30                              22/04/2013 12:32:30
'       12:32:30 PM                           22/04/2013 12:32:30
'       12:32:30 PM                           22/04/2013 12:32:30
'       2013-06-01 12:32:30Z                  01/06/2013 05:32:30
'       01 June 2013 19:32:30                 01/06/2013 19:32:30
'       01 June 2013 19:32:30                 01/06/2013 19:32:30
'       01 June 2013 07:32:30 PM              01/06/2013 19:32:30
'       01 June 2013 7:32:30 PM               01/06/2013 19:32:30
'       1 June 2013 19:32:30                  01/06/2013 19:32:30
'       1 June 2013 19:32:30                  01/06/2013 19:32:30
'       1 June 2013 07:32:30 PM               01/06/2013 19:32:30
'       1 June 2013 7:32:30 PM                01/06/2013 19:32:30
'       June 2013                             01/06/2013 00:00:00
'       June 2013                             01/06/2013 00:00:00

Использовании ParseExact и TryParseExact методы для преобразования строки, который должен соответствовать определенного формата или форматы DateTime значение.You use the ParseExact and TryParseExact methods to convert a string that must match a particular format or formats to a DateTime value. Укажите один или несколько строк даты и времени формата в качестве параметра в метод синтаксического анализа.You specify one or more date and time format strings as a parameter to the parsing method. В следующем примере используется TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) метод для преобразования строк, которые должны быть в формате «ГГГГММДД» или в формате «ЧЧММСС», в DateTime значения.The following example uses the TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) method to convert strings that must be either in a "yyyyMMdd" format or a "HHmmss" format to DateTime values.

string[] formats = { "yyyyMMdd", "HHmmss" };
string[] dateStrings = { "20130816", "20131608", "  20130816   ",
                   "115216", "521116", "  115216  " };
DateTime parsedDate;

foreach (var dateString in dateStrings)
{
    if (DateTime.TryParseExact(dateString, formats, null,
                               System.Globalization.DateTimeStyles.AllowWhiteSpaces |
                               System.Globalization.DateTimeStyles.AdjustToUniversal,
                               out parsedDate))
        Console.WriteLine($"{dateString} --> {parsedDate:g}");
    else
        Console.WriteLine($"Cannot convert {dateString}");
}
// The example displays the following output:
//       20130816 --> 8/16/2013 12:00 AM
//       Cannot convert 20131608
//         20130816    --> 8/16/2013 12:00 AM
//       115216 --> 4/22/2013 11:52 AM
//       Cannot convert 521116
//         115216   --> 4/22/2013 11:52 AM
Dim formats() As String = {"yyyyMMdd", "HHmmss"}
Dim dateStrings() As String = {"20130816", "20131608",
                              "  20130816   ", "115216",
                              "521116", "  115216  "}
Dim parsedDate As DateTime

For Each dateString As String In dateStrings
    If DateTime.TryParseExact(dateString, formats, Nothing,
                           DateTimeStyles.AllowWhiteSpaces Or
                           DateTimeStyles.AdjustToUniversal,
                           parsedDate) Then
        Console.WriteLine($"{dateString} --> {parsedDate:g}")
    Else
        Console.WriteLine($"Cannot convert {dateString}")
    End If
Next
' The example displays the following output:
'       20130816 --> 8/16/2013 12:00 AM
'       Cannot convert 20131608
'         20130816    --> 8/16/2013 12:00 AM
'       115216 --> 4/22/2013 11:52 AM
'       Cannot convert 521116
'         115216   --> 4/22/2013 11:52 AM

Часто используются ParseExact является для преобразования строкового представления из веб-службы, обычно в ISO 8601 стандартного формата.One common use for ParseExact is to convert a string representation from a web service, usually in ISO 8601 standard format. В следующем коде показано неверный формат строки для использования:The following code shows the correct format string to use:

string iso8601String = "20080501T08:30:52Z";
DateTime dateISO8602 = DateTime.ParseExact(iso8601String, "yyyyMMddTHH:mm:ssZ", 
    System.Globalization.CultureInfo.InvariantCulture);
Console.WriteLine($"{iso8601String} --> {dateISO8602:g}");
Dim iso8601String As String = "20080501T08:30:52Z"
Dim dateISO8602 As DateTime = DateTime.ParseExact(iso8601String, "yyyyMMddTHH:mm:ssZ", CultureInfo.InvariantCulture)
Console.WriteLine($"{iso8601String} --> {dateISO8602:g}")

Если не удается выполнить синтаксический анализ строки, Parse и ParseExact методы создания исключения.If a string cannot be parsed, the Parse and ParseExact methods throw an exception. TryParse И TryParseExact методы возвращают Boolean значение, указывающее, успешно ли выполнено преобразование.The TryParse and TryParseExact methods return a Boolean value that indicates whether the conversion succeeded or failed. Следует использовать TryParse или TryParseExact методы в сценариях, где важна производительность.You should use the TryParse or TryParseExact methods in scenarios where performance is important. Операции синтаксического анализа для строки даты и времени обычно имеют высокой доле сбоев и обработка исключений является ресурсоемким.The parsing operation for date and time strings tends to have a high failure rate, and exception handling is expensive. Эти методы следует использовать, если строки являются входными данными пользователями или из неизвестного источника.Use these methods if strings are input by users or coming from an unknown source.

Дополнительные сведения о синтаксическом разборе значений даты и времени см. в разделе строки синтаксического анализа даты и времени.For more information about parsing date and time values, see Parsing Date and Time Strings.

Значения даты и времениDateTime values

Описания значений времени в DateTime типа часто выражаются с использованием стандарта формате UTC (UTC).Descriptions of time values in the DateTime type are often expressed using the Coordinated Universal Time (UTC) standard. Время является имя внедрила время по Гринвичу (GMT).Coordinated Universal Time is the internationally recognized name for Greenwich Mean Time (GMT). Время — это время, измеренной по нулевой долготе, координат UTC.Coordinated Universal Time is the time as measured at zero degrees longitude, the UTC origin point. Летнее время не применим в формат UTC.Daylight saving time is not applicable to UTC.

Местное время относится к определенному часовому поясу.Local time is relative to a particular time zone. Часовой пояс, связанный с смещение часового пояса.A time zone is associated with a time zone offset. Смещение часового пояса — это смещение часового пояса, измеренное в часах из координат UTC.A time zone offset is the displacement of the time zone measured in hours from the UTC origin point. Кроме того при необходимости местное время зависит от летнего времени, который прибавляет или вычитает корректировки интервал времени.In addition, local time is optionally affected by daylight saving time, which adds or subtracts a time interval adjustment. Местное время вычисляется путем добавления смещения часового пояса времени UTC и коррекции для летнего времени при необходимости.Local time is calculated by adding the time zone offset to UTC and adjusting for daylight saving time if necessary. Смещение часового пояса в координат UTC равно нулю.The time zone offset at the UTC origin point is zero.

Время в формате UTC подходит для вычисления, сравнения и хранение даты и времени в файлах.UTC time is suitable for calculations, comparisons, and storing dates and time in files. Местное время подходит для отображения в пользовательском интерфейсе приложений для настольных систем.Local time is appropriate for display in user interfaces of desktop applications. Часовыми поясами приложения (например, многие веб-приложения) также должны работать с количеством другие часовые пояса.Time zone-aware applications (such as many Web applications) also need to work with a number of other time zones.

Если Kind свойство DateTime объект DateTimeKind.Unspecified, установлен ли представленное время является местное время, время в формате UTC или время в другой часовой пояс.If the Kind property of a DateTime object is DateTimeKind.Unspecified, it is unspecified whether the time represented is local time, UTC time, or a time in some other time zone.

Разрешение даты и времениDateTime resolution

Примечание

В качестве альтернативы для выполнения арифметических операций на DateTime значения измерение прошедшего времени, можно использовать Stopwatch класса.As an alternative to performing date and time arithmetic on DateTime values to measure elapsed time, you can use the Stopwatch class.

Ticks Свойство выражает значений даты и времени в единицах одной десятимиллионной секунды.The Ticks property expresses date and time values in units of one ten-millionth of a second. Millisecond Свойство возвращает тысячных долей секунды в значении даты и времени.The Millisecond property returns the thousandths of a second in a date and time value. С помощью повторных вызовов DateTime.Now свойство измерение прошедшего времени зависит от системных часов.Using repeated calls to the DateTime.Now property to measure elapsed time is dependent on the system clock. Системные часы в системах Windows 7 и Windows 8 имеет разрешение примерно 15 миллисекунд.The system clock on Windows 7 and Windows 8 systems has a resolution of approximately 15 milliseconds. Это решение влияет на малые промежутки, менее 100 миллисекунд.This resolution affects small time intervals less than 100 milliseconds.

В следующем примере показано зависимость значений даты и времени на разрешение системных часов.The following example illustrates the dependence of current date and time values on the resolution of the system clock. В примере внешний цикл повторяется 20 раз, а во внутреннем цикле служит для внешнего цикла задержки.In the example, an outer loop repeats 20 times, and an inner loop serves to delay the outer loop. Если значение счетчика внешний цикл — 10, вызов Thread.Sleep метод Создание пяти миллисекунд задержки.If the value of the outer loop counter is 10, a call to the Thread.Sleep method introduces a five-millisecond delay. В следующем примере показано количество миллисекунд, возвращенный DateTime.Now.Milliseconds изменения свойств только после вызова Thread.Sleep.The following example shows the number of milliseconds returned by the DateTime.Now.Milliseconds property changes only after the call to Thread.Sleep.

String output = "";
for (int ctr = 0; ctr <= 20; ctr++)
{
    output += String.Format($"{DateTime.Now.Millisecond}\n");
    // Introduce a delay loop.
    for (int delay = 0; delay <= 1000; delay++)
    { }

    if (ctr == 10)
    {
        output += "Thread.Sleep called...\n";
        System.Threading.Thread.Sleep(5);
    }
}
Console.WriteLine(output);
// Press "Run" to see the output
Dim output As String = ""
For ctr As Integer = 0 To 20
    output += Date.Now.Millisecond.ToString() + vbCrLf
    ' Introduce a delay loop.
    For delay As Integer = 0 To 1000
    Next

    If ctr = 10 Then
        output += "Thread.Sleep called..." + vbCrLf
        Thread.Sleep(5)
    End If
Next
Console.WriteLine(output)
' The example displays output like the following:
'       111
'       111
'       111
'       111
'       111
'       111
'       111
'       111
'       111
'       111
'       111
'       Thread.Sleep called...
'       143
'       143
'       143
'       143
'       143
'       143
'       143
'       143
'       143
'       143

Операции даты и времениDateTime operations

Вычисления с помощью DateTime структуры, такие как Add или Subtract, не изменяет значение структуры.A calculation using a DateTime structure, such as Add or Subtract, does not modify the value of the structure. Вместо этого вычисление возвращает новый DateTime структуры, значение которого является результатом вычисления.Instead, the calculation returns a new DateTime structure whose value is the result of the calculation.

Операции преобразования между часовыми поясами (например, между временем UTC и местным или между одного часового пояса) учитывать летнее время, но сравнение и арифметические операции — нет.Conversion operations between time zones (such as between UTC and local time, or between one time zone and another) take daylight saving time into account, but arithmetic and comparison operations do not.

DateTime Самой структуры предлагает ограниченную поддержку для преобразования из одного часового пояса в другой.The DateTime structure itself offers limited support for converting from one time zone to another. Можно использовать ToLocalTime можно использовать метод, чтобы преобразовать время UTC в местное время, или ToUniversalTime метод для преобразования местного времени в формате UTC.You can use the ToLocalTime method to convert UTC to local time, or you can use the ToUniversalTime method to convert from local time to UTC. Однако доступен полный набор методов преобразования часового пояса в TimeZoneInfo класса.However, a full set of time zone conversion methods is available in the TimeZoneInfo class. Преобразовать время в любом из мировых часовых поясов во время в любой другой часовой пояс, с помощью этих методов.You convert the time in any one of the world's time zones to the time in any other time zone using these methods.

Вычисления и сравнения DateTime объекты являются значимыми только в том случае, если они представляют время, в том же часовом поясе.Calculations and comparisons of DateTime objects are meaningful only if the objects represent times in the same time zone. Можно использовать TimeZoneInfo объект для представления DateTime значения часовых поясов, несмотря на то, что два слабо связаны.You can use a TimeZoneInfo object to represent a DateTime value's time zone, although the two are loosely coupled. Объект DateTime объект имеет свойство, которое возвращает объект, представляющий часовой пояс этого значения даты и времени.A DateTime object does not have a property that returns an object that represents that date and time value's time zone. Kind Указывает свойство, если DateTime представляет время UTC, местное время, или не определен.The Kind property indicates if a DateTime represents UTC, local time, or is unspecified. В приложении часовыми поясами, необходимо использовать какой-либо внешний механизм для определения часового пояса, в котором DateTime был создан объект.In a time zone-aware application, you must rely on some external mechanism to determine the time zone in which a DateTime object was created. Можно использовать структуру, которая создает оболочку оба DateTime значение и TimeZoneInfo , представляющий DateTime значения часового пояса.You could use a structure that wraps both the DateTime value and the TimeZoneInfo object that represents the DateTime value's time zone. Дополнительные сведения об использовании в формате UTC в вычислений и сравнений с DateTime значения, см. в разделе Выполнение арифметических операций с датами и временем.For details on using UTC in calculations and comparisons with DateTime values, see Performing Arithmetic Operations with Dates and Times.

Каждый DateTime член неявно использует григорианский календарь для выполнения своих операций.Each DateTime member implicitly uses the Gregorian calendar to perform its operation. Исключениями являются методы, которые неявно указывают календаря.Exceptions are methods that implicitly specify a calendar. К ним относятся конструкторы, которые указывают календаря и методы с параметром, производных от IFormatProvider, такие как System.Globalization.DateTimeFormatInfo.These include constructors that specify a calendar, and methods with a parameter derived from IFormatProvider, such as System.Globalization.DateTimeFormatInfo.

Операции с членами DateTime тип учитывает сведения об учетной записи, такие как правила високосного года и число дней в месяце.Operations by members of the DateTime type take into account details such as leap years and the number of days in a month.

Значения даты и времени и календарейDateTime values and calendars

Библиотеки классов .NET Framework включает ряд классов календарей, которые являются производными от Calendar класса.The .NET Framework Class Library includes a number of calendar classes, all of which are derived from the Calendar class. Они приведены ниже.They are:

Каждый язык и региональные параметры использует календарь по умолчанию определяется его только для чтения CultureInfo.Calendar свойство.Each culture uses a default calendar defined by its read-only CultureInfo.Calendar property. Каждый язык и региональные параметры могут поддерживать один или несколько календарей, определяется его только для чтения CultureInfo.OptionalCalendars свойство.Each culture may support one or more calendars defined by its read-only CultureInfo.OptionalCalendars property. Календарь, используемый в настоящее время конкретного CultureInfo объект определяется его DateTimeFormatInfo.Calendar свойство.The calendar currently used by a specific CultureInfo object is defined by its DateTimeFormatInfo.Calendar property. Он должен быть одним из календари в CultureInfo.OptionalCalendars массива.It must be one of the calendars found in the CultureInfo.OptionalCalendars array.

Текущий календарь культуры по используется во всех операциях форматирования для этого языка и региональных параметров.A culture's current calendar is used in all formatting operations for that culture. Например, по умолчанию языка и региональных параметров Тай-буддистский используется эры тайского буддистского календаря, представленный ThaiBuddhistCalendar класса.For example, the default calendar of the Thai Buddhist culture is the Thai Buddhist Era calendar, which is represented by the ThaiBuddhistCalendar class. Когда CultureInfo в форматировании даты и времени операции используется объект, который представляет Тай-буддистский языка и региональных параметров, эры тайского буддистского календаря используется по умолчанию.When a CultureInfo object that represents the Thai Buddhist culture is used in a date and time formatting operation, the Thai Buddhist Era calendar is used by default. Только в том случае, если используется григорианский календарь культуры DateTimeFormatInfo.Calendar свойство меняется, как показано в следующем примере:The Gregorian calendar is used only if the culture's DateTimeFormatInfo.Calendar property is changed, as the following example shows:

var thTH = new System.Globalization.CultureInfo("th-TH");
var value = new DateTime(2016, 5, 28);

Console.WriteLine(value.ToString(thTH));

thTH.DateTimeFormat.Calendar = new System.Globalization.GregorianCalendar();
Console.WriteLine(value.ToString(thTH));
// Press "Run" to see the output
Dim thTH As New CultureInfo("th-TH")
Dim value As New DateTime(2016, 5, 28)

Console.WriteLine(value.ToString(thTH))

thTH.DateTimeFormat.Calendar = New GregorianCalendar()
Console.WriteLine(value.ToString(thTH))
' The example displays the following output:
'       28/5/2559 0:00:00
'       28/5/2016 0:00:00

Текущий календарь культуры по также используется во всех операциях синтаксического анализа для этого языка и региональных параметров, как показано в следующем примере.A culture's current calendar is also used in all parsing operations for that culture, as the following example shows.

var thTH = new System.Globalization.CultureInfo("th-TH");
var value = DateTime.Parse("28/05/2559", thTH);
Console.WriteLine(value.ToString(thTH));

thTH.DateTimeFormat.Calendar = new System.Globalization.GregorianCalendar();
Console.WriteLine(value.ToString(thTH));
// Press "Run" to see the output
Private Sub ThaiBuddhistEraParse()
    Dim thTH As New CultureInfo("th-TH")
    Dim value As DateTime = DateTime.Parse("28/5/2559", thTH)
    Console.WriteLine(value.ToString(thTH))

    thTH.DateTimeFormat.Calendar = New GregorianCalendar()
    Console.WriteLine(value.ToString(thTH))
    ' The example displays the following output:
    '       28/5/2559 0:00:00
    '       28/5/2016 0:00:00
End Sub

Вы создаете экземпляры DateTime с использованием элементы даты и времени (количество год, месяц и день) конкретного календаря, вызвав конструктора DateTime , включающий calendar параметр и передавая ему Calendarобъект, который представляет календарь.You instantiate a DateTime value using the date and time elements (number of the year, month, and day) of a specific calendar by calling a DateTime constructor that includes a calendar parameter and passing it a Calendar object that represents that calendar. В следующем примере используется элементы даты и времени из ThaiBuddhistCalendar календаря.The following example uses the date and time elements from the ThaiBuddhistCalendar calendar.

var thTH = new System.Globalization.CultureInfo("th-TH");
var dat = new DateTime(2559, 5, 28, thTH.DateTimeFormat.Calendar);
Console.WriteLine($"Thai Buddhist era date: {dat.ToString("d", thTH)}");
Console.WriteLine($"Gregorian date:   {dat:d}");
// Press "Run" to see the output
Dim thTH As New CultureInfo("th-TH")
Dim dat As New DateTime(2559, 5, 28, thTH.DateTimeFormat.Calendar)
Console.WriteLine("Thai Buddhist Era date: {0}", dat.ToString("d", thTH))
Console.WriteLine("Gregorian date:   {0:d}", dat)
' The example displays the following output:
'       Thai Buddhist Era Date:  28/5/2559
'       Gregorian Date:     28/05/2016

DateTime конструкторы, которые не включают calendar параметр предполагается, что элементы даты и времени выражаются в виде единиц по григорианскому календарю.DateTime constructors that do not include a calendar parameter assume that the date and time elements are expressed as units in the Gregorian calendar.

Все остальные DateTime свойства и методы используют григорианский календарь.All other DateTime properties and methods use the Gregorian calendar. Например DateTime.Year свойство возвращает год по григорианскому календарю и DateTime.IsLeapYear(Int32) метод предполагает, что year параметр — год по григорианскому календарю.For example, the DateTime.Year property returns the year in the Gregorian calendar, and the DateTime.IsLeapYear(Int32) method assumes that the year parameter is a year in the Gregorian calendar. Каждый DateTime элемент, который использует григорианский календарь имеет соответствующий член типа Calendar класс, использующий конкретный календарь.Each DateTime member that uses the Gregorian calendar has a corresponding member of the Calendar class that uses a specific calendar. Например Calendar.GetYear метод возвращает значение года в календаре конкретного и Calendar.IsLeapYear метод интерпретирует year номер года в календаре конкретного параметра.For example, the Calendar.GetYear method returns the year in a specific calendar, and the Calendar.IsLeapYear method interprets the year parameter as a year number in a specific calendar. В следующем примере используются оба DateTime и соответствующими членами объекта ThaiBuddhistCalendar класса.The following example uses both the DateTime and the corresponding members of the ThaiBuddhistCalendar class.

var thTH = new System.Globalization.CultureInfo("th-TH");
var cal = thTH.DateTimeFormat.Calendar;
var dat = new DateTime(2559, 5, 28, cal);
Console.WriteLine("Using the Thai Buddhist Era calendar:");
Console.WriteLine($"Date: {dat.ToString("d", thTH)}");
Console.WriteLine($"Year: {cal.GetYear(dat)}");
Console.WriteLine($"Leap year: {cal.IsLeapYear(cal.GetYear(dat))}\n");

Console.WriteLine("Using the Gregorian calendar:");
Console.WriteLine($"Date: {dat:d}");
Console.WriteLine($"Year: {dat.Year}");
Console.WriteLine($"Leap year: {DateTime.IsLeapYear(dat.Year)}");
// Press "Run" to see the output
Dim thTH As New CultureInfo("th-TH")
Dim cal As Calendar = thTH.DateTimeFormat.Calendar
Dim dat As New DateTime(2559, 5, 28, cal)
Console.WriteLine("Using the Thai Buddhist Era calendar:")
Console.WriteLine("Date: {0}", dat.ToString("d", thTH))
Console.WriteLine("Year: {0}", cal.GetYear(dat))
Console.WriteLine("Leap year: {0}", cal.IsLeapYear(cal.GetYear(dat)))
Console.WriteLine()

Console.WriteLine("Using the Gregorian calendar:")
Console.WriteLine("Date: {0:d}", dat)
Console.WriteLine("Year: {0}", dat.Year)
Console.WriteLine("Leap year: {0}", DateTime.IsLeapYear(dat.Year))
' The example displays the following output:
'       Using the Thai Buddhist Era calendar
'       Date :   28/5/2559
'       Year: 2559
'       Leap year :   True
'
'       Using the Gregorian calendar
'       Date :   28/05/2016
'       Year: 2016
'       Leap year :   True

DateTime Структура включает DayOfWeek свойство, которое возвращает день недели по григорианскому календарю.The DateTime structure includes a DayOfWeek property that returns the day of the week in the Gregorian calendar. Он не включает член, который позволяет получить номер недели года.It does not include a member that allows you to retrieve the week number of the year. Чтобы получить номер недели года, вызовите отдельных календаря Calendar.GetWeekOfYear метод.To retrieve the week of the year, call the individual calendar's Calendar.GetWeekOfYear method. Ниже приведен пример.The following example provides an illustration.

var thTH = new System.Globalization.CultureInfo("th-TH");
var thCalendar = thTH.DateTimeFormat.Calendar;
var dat = new DateTime(1395, 8, 18, thCalendar);
Console.WriteLine("Using the Thai Buddhist Era calendar:");
Console.WriteLine($"Date: {dat.ToString("d", thTH)}");
Console.WriteLine($"Day of Week: {thCalendar.GetDayOfWeek(dat)}");
Console.WriteLine($"Week of year: {thCalendar.GetWeekOfYear(dat, System.Globalization.CalendarWeekRule.FirstDay, DayOfWeek.Sunday)}\n");

var greg = new System.Globalization.GregorianCalendar();
Console.WriteLine("Using the Gregorian calendar:");
Console.WriteLine($"Date: {dat:d}");
Console.WriteLine($"Day of Week: {dat.DayOfWeek}");
Console.WriteLine($"Week of year: {greg.GetWeekOfYear(dat, System.Globalization.CalendarWeekRule.FirstDay,DayOfWeek.Sunday)}");
// Press "Run" to see the output
Dim thTH As New CultureInfo("th-TH")
Dim thCalendar As Calendar = thTH.DateTimeFormat.Calendar
Dim dat As New DateTime(1395, 8, 18, thCalendar)
Console.WriteLine("Using the Thai Buddhist Era calendar:")
Console.WriteLine("Date: {0}", dat.ToString("d", thTH))
Console.WriteLine("Day of Week: {0}", thCalendar.GetDayOfWeek(dat))
Console.WriteLine("Week of year: {0}",
                thCalendar.GetWeekOfYear(dat, CalendarWeekRule.FirstDay,
                                       DayOfWeek.Sunday))
Console.WriteLine()

Dim greg As Calendar = New GregorianCalendar()
Console.WriteLine("Using the Gregorian calendar:")
Console.WriteLine("Date: {0:d}", dat)
Console.WriteLine("Day of Week: {0}", dat.DayOfWeek)
Console.WriteLine("Week of year: {0}",
                 greg.GetWeekOfYear(dat, CalendarWeekRule.FirstDay,
                                    DayOfWeek.Sunday))
' The example displays the following output:
'       Using the Thai Buddhist Era calendar
'       Date :  18/8/1395
'       Day of Week: Sunday
'       Week of year: 34
'       
'       Using the Gregorian calendar
'       Date :  18/08/0852
'       Day of Week: Sunday
'       Week of year: 34

Дополнительные сведения о датами и календарями, см. в разделе работа с календарями.For more information on dates and calendars, see Working with Calendars.

Сохранение значения даты и времениPersisting DateTime values

Можно сохранить DateTime значения в следующих четырех способов:You can persist DateTime values in four ways:

Необходимо убедиться, что подпрограмму, которая восстанавливает DateTime значения не потерять данные или вызывать исключение, независимо от того, какой метод выбран.You must ensure that the routine that restores the DateTime values doesn't lose data or throw an exception regardless of which technique you choose. DateTime значения должны приема-передачи.DateTime values should round-trip. То есть исходное значение и восстановленное значение должны быть одинаковыми.That is, the original value and the restored value should be the same. Если исходный DateTime значение представляет один момент времени, он должен определять один и тот же момент времени, при восстановлении.And if the original DateTime value represents a single instant of time, it should identify the same moment of time when it's restored.

Сохранение значений в виде строкPersisting values as strings

Для успешного восстановления DateTime значения, которые сохраняются как строки, подчиняются следующим правилам:To successfully restore DateTime values that are persisted as strings, follow these rules:

  • Внести те же предположения о форматирования, зависящего от языка и региональных параметров при восстановлении строку в качестве сохранением его.Make the same assumptions about culture-specific formatting when you restore the string as when you persisted it. Чтобы гарантировать, что строка может быть восстановлена на системы, текущего языка и региональных параметров отличается от языка и региональных параметров системы, он был сохранен на, вызвать ToString перегрузки, чтобы сохранить строку с помощью правил инвариантного языка и региональных параметров.To ensure that a string can be restored on a system whose current culture is different from the culture of the system it was saved on, call the ToString overload to save the string by using the conventions of the invariant culture. Вызовите Parse(String, IFormatProvider, DateTimeStyles) или TryParse(String, IFormatProvider, DateTimeStyles, DateTime) перегрузки для восстановления строки с помощью правил инвариантного языка и региональных параметров.Call the Parse(String, IFormatProvider, DateTimeStyles) or TryParse(String, IFormatProvider, DateTimeStyles, DateTime) overload to restore the string by using the conventions of the invariant culture. Никогда не используйте ToString(), Parse(String), или TryParse(String, DateTime) перегрузки, которые используются соглашения текущих региональных параметров потока.Never use the ToString(), Parse(String), or TryParse(String, DateTime) overloads, which use the conventions of the current thread culture.

  • Если дата представляет один момент времени, убедитесь, что оно представляет тот же момент времени, когда он восстанавливается, даже на другом часовом поясе.If the date represents a single moment of time, ensure that it represents the same moment in time when it's restored, even on a different time zone. Преобразовать DateTime значение в формате UTC (UTC), прежде чем сохранить его.Convert the DateTime value to Coordinated Universal Time (UTC) before saving it. Также можно сериализовать значение, а также сведения о часовом поясе.You can also serialize the value along with time zone information. Дополнительные сведения об этом подходе см. в разделе данные сериализации даты и времени и часового пояса.For more information about this approach, see Serializing DateTime and time zone data.

Самые распространенные ошибки при сохранении DateTime значений в виде строк — использовать правила форматирования по умолчанию или текущего языка и региональных параметров.The most common error made when persisting DateTime values as strings is to rely on the formatting conventions of the default or current culture. Проблемы возникают, если отличаются, при сохранении и восстановлении строки текущего языка и региональных параметров.Problems arise if the current culture is different when saving and restoring the strings. В следующем примере показано этих проблем.The following example illustrates these problems. Она сохраняет пять дат, с помощью соглашений о форматировании текущего языка и региональных параметров, в данном случае это английский (США).It saves five dates using the formatting conventions of the current culture, which in this case is English (United States). Он восстанавливает даты, используя правила форматирования различных языка и региональных параметров, в данном случае это английский (Соединенное Королевство).It restores the dates using the formatting conventions of a different culture, which in this case is English (Great Britain). За разных соглашений о форматировании двух языков и региональных параметров, две даты не могут быть восстановлены, а остальные три даты интерпретируются неверно.Because the formatting conventions of the two cultures are different, two of the dates can't be restored, and the remaining three dates are interpreted incorrectly. Кроме того Если исходные значения даты и времени представляют один моменты времени, восстановленный раз неверны, из-за потери сведений о часовом поясе.Also, if the original date and time values represent single moments in time, the restored times are incorrect because time zone information is lost.

public static void PersistAsLocalStrings()
{
    SaveLocalDatesAsString();
    RestoreLocalDatesFromString();
}

private static void SaveLocalDatesAsString()
{
    DateTime[] dates = { new DateTime(2014, 6, 14, 6, 32, 0),
                   new DateTime(2014, 7, 10, 23, 49, 0),
                   new DateTime(2015, 1, 10, 1, 16, 0),
                   new DateTime(2014, 12, 20, 21, 45, 0),
                   new DateTime(2014, 6, 2, 15, 14, 0) };
    string output = null;

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}");
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:");
    for (int ctr = 0; ctr < dates.Length; ctr++)
    {
        Console.WriteLine(dates[ctr].ToString("f"));
        output += dates[ctr].ToString() + (ctr != dates.Length - 1 ? "|" : "");
    }
    StreamWriter sw = new StreamWriter(filenameTxt);
    sw.Write(output);
    sw.Close();
    Console.WriteLine("Saved dates...");
}

private static void RestoreLocalDatesFromString()
{
    TimeZoneInfo.ClearCachedData();
    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}");
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
    StreamReader sr = new StreamReader(filenameTxt);
    string[] inputValues = sr.ReadToEnd().Split(new char[] { '|' },
                                                StringSplitOptions.RemoveEmptyEntries);
    sr.Close();
    Console.WriteLine("The dates on an {0} system:",
                      Thread.CurrentThread.CurrentCulture.Name);
    foreach (var inputValue in inputValues)
    {
        DateTime dateValue;
        if (DateTime.TryParse(inputValue, out dateValue))
        {
            Console.WriteLine($"'{inputValue}' --> {dateValue:f}");
        }
        else
        {
            Console.WriteLine("Cannot parse '{inputValue}'");
        }
    }
    Console.WriteLine("Restored dates...");
}
// When saved on an en-US system, the example displays the following output:
//       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
//       The dates on an en-US system:
//       Saturday, June 14, 2014 6:32 AM
//       Thursday, July 10, 2014 11:49 PM
//       Saturday, January 10, 2015 1:16 AM
//       Saturday, December 20, 2014 9:45 PM
//       Monday, June 02, 2014 3:14 PM
//       Saved dates...
//
// When restored on an en-GB system, the example displays the following output:
//       Current Time Zone: (UTC) Dublin, Edinburgh, Lisbon, London
//       The dates on an en-GB system:
//       Cannot parse //6/14/2014 6:32:00 AM//
//       //7/10/2014 11:49:00 PM// --> 07 October 2014 23:49
//       //1/10/2015 1:16:00 AM// --> 01 October 2015 01:16
//       Cannot parse //12/20/2014 9:45:00 PM//
//       //6/2/2014 3:14:00 PM// --> 06 February 2014 15:14
//       Restored dates...
Public Sub PersistAsLocalStrings()
    SaveDatesAsStrings()
    RestoreDatesAsStrings()
End Sub

Private Sub SaveDatesAsStrings()
    Dim dates() As Date = {#6/14/2014 6:32AM#, #7/10/2014 11:49PM#,
                          #1/10/2015 1:16AM#, #12/20/2014 9:45PM#,
                          #6/2/2014 3:14PM#}
    Dim output As String = Nothing

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For ctr As Integer = 0 To dates.Length - 1
        Console.WriteLine(dates(ctr).ToString("f"))
        output += dates(ctr).ToString() + If(ctr <> dates.Length - 1, "|", "")
    Next
    Dim sw As New StreamWriter(filenameTxt)
    sw.Write(output)
    sw.Close()
    Console.WriteLine("Saved dates...")
End Sub

Private Sub RestoreDatesAsStrings()
    TimeZoneInfo.ClearCachedData()
    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB")
    Dim sr As New StreamReader(filenameTxt)
    Dim inputValues() As String = sr.ReadToEnd().Split({"|"c}, StringSplitOptions.RemoveEmptyEntries)
    sr.Close()
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For Each inputValue In inputValues
        Dim dateValue As Date
        If DateTime.TryParse(inputValue, dateValue) Then
            Console.WriteLine($"'{inputValue}' --> {dateValue:f}")
        Else
            Console.WriteLine($"Cannot parse '{inputValue}'")
        End If
    Next
    Console.WriteLine("Restored dates...")
End Sub
' When saved on an en-US system, the example displays the following output:
'       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
'       The dates on an en-US system:
'       Saturday, June 14, 2014 6:32 AM
'       Thursday, July 10, 2014 11:49 PM
'       Saturday, January 10, 2015 1:16 AM
'       Saturday, December 20, 2014 9:45 PM
'       Monday, June 02, 2014 3:14 PM
'       Saved dates...
'
' When restored on an en-GB system, the example displays the following output:
'       Current Time Zone: (UTC) Dublin, Edinburgh, Lisbon, London
'       The dates on an en-GB system:
'       Cannot parse '6/14/2014 6:32:00 AM'
'       '7/10/2014 11:49:00 PM' --> 07 October 2014 23:49
'       '1/10/2015 1:16:00 AM' --> 01 October 2015 01:16
'       Cannot parse '12/20/2014 9:45:00 PM'
'       '6/2/2014 3:14:00 PM' --> 06 February 2014 15:14
'       Restored dates...

Выполнить цикл обработки DateTime значения успешно, выполните следующие действия:To round-trip DateTime values successfully, follow these steps:

  1. Если значения представляют один моменты времени, преобразовать их из локального времени в формате UTC, вызвав ToUniversalTime метод.If the values represent single moments of time, convert them from the local time to UTC by calling the ToUniversalTime method.
  2. Преобразовать даты в их строковые представления, вызвав ToString(String, IFormatProvider) или String.Format(IFormatProvider, String, Object[]) перегрузки.Convert the dates to their string representations by calling the ToString(String, IFormatProvider) or String.Format(IFormatProvider, String, Object[]) overload. Использовать правила форматирования для инвариантного языка и региональных параметров, указав CultureInfo.InvariantCulture как provider аргумент.Use the formatting conventions of the invariant culture by specifying CultureInfo.InvariantCulture as the provider argument. Укажите, что значения должны приема-передачи с помощью строки стандартного формата «O» или «R».Specify that the value should round-trip by using the "O" or "R" standard format string.

Восстановление сохраненного DateTime значения без потери данных, выполните следующие действия:To restore the persisted DateTime values without data loss, follow these steps:

  1. Синтаксический анализ данных, вызвав ParseExact или TryParseExact перегрузки.Parse the data by calling the ParseExact or TryParseExact overload. Укажите CultureInfo.InvariantCulture как provider аргумента и используйте один и тот же стандартный формат строки вы использовали для format аргумента во время преобразования.Specify CultureInfo.InvariantCulture as the provider argument, and use the same standard format string you used for the format argument during conversion. Включить DateTimeStyles.RoundtripKind значение в styles аргумент.Include the DateTimeStyles.RoundtripKind value in the styles argument.
  2. Если DateTime значения представляют один моменты времени, вызов ToLocalTime метод преобразования анализируемых данных от времени UTC в местное время.If the DateTime values represent single moments in time, call the ToLocalTime method to convert the parsed date from UTC to local time.

В следующем примере используется инвариантный язык и региональные параметры и строка стандартного формата «O», чтобы убедиться, что DateTime значения сохраняется и восстанавливается представляют один и тот же момент времени независимо от системы, язык и региональные параметры или часового пояса из исходной и целевой систем.The following example uses the invariant culture and the "O" standard format string to ensure that DateTime values saved and restored represent the same moment in time regardless of the system, culture, or time zone of the source and target systems.

public static void PersistAsInvariantStrings()
{
    SaveDatesAsInvariantStrings();
    RestoreDatesAsInvariantStrings();
}

private static void SaveDatesAsInvariantStrings()
{
    DateTime[] dates = { new DateTime(2014, 6, 14, 6, 32, 0),
                   new DateTime(2014, 7, 10, 23, 49, 0),
                   new DateTime(2015, 1, 10, 1, 16, 0),
                   new DateTime(2014, 12, 20, 21, 45, 0),
                   new DateTime(2014, 6, 2, 15, 14, 0) };
    string output = null;

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}");
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:");
    for (int ctr = 0; ctr < dates.Length; ctr++)
    {
        Console.WriteLine(dates[ctr].ToString("f"));
        output += dates[ctr].ToUniversalTime().ToString("O", CultureInfo.InvariantCulture)
                  + (ctr != dates.Length - 1 ? "|" : "");
    }
    StreamWriter sw = new StreamWriter(filenameTxt);
    sw.Write(output);
    sw.Close();
    Console.WriteLine("Saved dates...");
}

private static void RestoreDatesAsInvariantStrings()
{
    TimeZoneInfo.ClearCachedData();
    Console.WriteLine("Current Time Zone: {0}",
                      TimeZoneInfo.Local.DisplayName);
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
    StreamReader sr = new StreamReader(filenameTxt);
    string[] inputValues = sr.ReadToEnd().Split(new char[] { '|' },
                                                StringSplitOptions.RemoveEmptyEntries);
    sr.Close();
    Console.WriteLine("The dates on an {0} system:",
                      Thread.CurrentThread.CurrentCulture.Name);
    foreach (var inputValue in inputValues)
    {
        DateTime dateValue;
        if (DateTime.TryParseExact(inputValue, "O", CultureInfo.InvariantCulture,
                              DateTimeStyles.RoundtripKind, out dateValue))
        {
            Console.WriteLine($"'{inputValue}' --> {dateValue.ToLocalTime():f}");
        }
        else
        {
            Console.WriteLine("Cannot parse '{0}'", inputValue);
        }
    }
    Console.WriteLine("Restored dates...");
}
// When saved on an en-US system, the example displays the following output:
//       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
//       The dates on an en-US system:
//       Saturday, June 14, 2014 6:32 AM
//       Thursday, July 10, 2014 11:49 PM
//       Saturday, January 10, 2015 1:16 AM
//       Saturday, December 20, 2014 9:45 PM
//       Monday, June 02, 2014 3:14 PM
//       Saved dates...
//
// When restored on an en-GB system, the example displays the following output:
//       Current Time Zone: (UTC) Dublin, Edinburgh, Lisbon, London
//       The dates on an en-GB system:
//       '2014-06-14T13:32:00.0000000Z' --> 14 June 2014 14:32
//       '2014-07-11T06:49:00.0000000Z' --> 11 July 2014 07:49
//       '2015-01-10T09:16:00.0000000Z' --> 10 January 2015 09:16
//       '2014-12-21T05:45:00.0000000Z' --> 21 December 2014 05:45
//       '2014-06-02T22:14:00.0000000Z' --> 02 June 2014 23:14
//       Restored dates...
Public Sub PersistAsInvariantStrings()
    SaveDatesAsInvariantStrings()
    RestoreDatesAsInvariantStrings()
End Sub

Private Sub SaveDatesAsInvariantStrings()
    Dim dates() As Date = {#6/14/2014 6:32AM#, #7/10/2014 11:49PM#,
                          #1/10/2015 1:16AM#, #12/20/2014 9:45PM#,
                          #6/2/2014 3:14PM#}
    Dim output As String = Nothing

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For ctr As Integer = 0 To dates.Length - 1
        Console.WriteLine(dates(ctr).ToString("f"))
        output += dates(ctr).ToUniversalTime().ToString("O", CultureInfo.InvariantCulture) +
                                   If(ctr <> dates.Length - 1, "|", "")
    Next
    Dim sw As New StreamWriter(filenameTxt)
    sw.Write(output)
    sw.Close()
    Console.WriteLine("Saved dates...")
End Sub

Private Sub RestoreDatesAsInvariantStrings()
    TimeZoneInfo.ClearCachedData()
    Console.WriteLine("Current Time Zone: {0}",
                    TimeZoneInfo.Local.DisplayName)
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB")
    Dim sr As New StreamReader(filenameTxt)
    Dim inputValues() As String = sr.ReadToEnd().Split({"|"c}, StringSplitOptions.RemoveEmptyEntries)
    sr.Close()
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For Each inputValue In inputValues
        Dim dateValue As Date
        If DateTime.TryParseExact(inputValue, "O", CultureInfo.InvariantCulture,
                          DateTimeStyles.RoundtripKind, dateValue) Then
            Console.WriteLine($"'{inputValue}' --> {dateValue.ToLocalTime():f}")
        Else
            Console.WriteLine($"Cannot parse '{inputValue}'")
        End If
    Next
    Console.WriteLine("Restored dates...")
End Sub
' When saved on an en-US system, the example displays the following output:
'       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
'       The dates on an en-US system:
'       Saturday, June 14, 2014 6:32 AM
'       Thursday, July 10, 2014 11:49 PM
'       Saturday, January 10, 2015 1:16 AM
'       Saturday, December 20, 2014 9:45 PM
'       Monday, June 02, 2014 3:14 PM
'       Saved dates...
'
' When restored on an en-GB system, the example displays the following output:
'       Current Time Zone: (UTC) Dublin, Edinburgh, Lisbon, London
'       The dates on an en-GB system:
'       '2014-06-14T13:32:00.0000000Z' --> 14 June 2014 14:32
'       '2014-07-11T06:49:00.0000000Z' --> 11 July 2014 07:49
'       '2015-01-10T09:16:00.0000000Z' --> 10 January 2015 09:16
'       '2014-12-21T05:45:00.0000000Z' --> 21 December 2014 05:45
'       '2014-06-02T22:14:00.0000000Z' --> 02 June 2014 23:14
'       Restored dates...

Сохранение значения как целые числаPersisting values as integers

Можно сохранить дату и время в виде Int64 значение, представляющее число тактов.You can persist a date and time as an Int64 value that represents a number of ticks. В этом случае не нужно учитывать язык и региональные параметры системы DateTime сохраняются и восстанавливаются на значения.In this case, you don't have to consider the culture of the systems the DateTime values are persisted and restored on.

Для сохранения DateTime значение как целое число:To persist a DateTime value as an integer:

  • Если DateTime значений, представляющих единый моменты времени, преобразуйте их в формат UTC, вызвав ToUniversalTime метод.If the DateTime values represent single moments in time, convert them to UTC by calling the ToUniversalTime method.
  • Получить число тактов, представленного параметром DateTime значение из его Ticks свойство.Retrieve the number of ticks represented by the DateTime value from its Ticks property.

Чтобы восстановить DateTime значение, который сохранен как целое число:To restore a DateTime value that has been persisted as an integer:

  1. Создайте новый экземпляр DateTime путем передачи Int64 значение DateTime(Int64) конструктор.Instantiate a new DateTime object by passing the Int64 value to the DateTime(Int64) constructor.
  2. Если DateTime значение представляет один момент времени, преобразовать его от времени UTC в местное время, вызвав ToLocalTime метод.If the DateTime value represents a single moment in time, convert it from UTC to the local time by calling the ToLocalTime method.

Следующий пример сохраняет массив DateTime значения как целые числа в системе в США. тихоокеанском стандартном часовом поясе США.The following example persists an array of DateTime values as integers on a system in the U.S. Pacific Time zone. Он восстанавливает в системе в поясе UTC.It restores it on a system in the UTC zone. Включает файл, содержащий целые числа Int32 значение, указывающее общее число Int64 значения, которые следуют за его.The file that contains the integers includes an Int32 value that indicates the total number of Int64 values that immediately follow it.

public static void PersistAsIntegers()
{
    SaveDatesAsInts();
    RestoreDatesAsInts();
}

private static void SaveDatesAsInts()
{
    DateTime[] dates = { new DateTime(2014, 6, 14, 6, 32, 0),
                   new DateTime(2014, 7, 10, 23, 49, 0),
                   new DateTime(2015, 1, 10, 1, 16, 0),
                   new DateTime(2014, 12, 20, 21, 45, 0),
                   new DateTime(2014, 6, 2, 15, 14, 0) };

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}");
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:");
    long[] ticks = new long[dates.Length];
    for (int ctr = 0; ctr < dates.Length; ctr++)
    {
        Console.WriteLine(dates[ctr].ToString("f"));
        ticks[ctr] = dates[ctr].ToUniversalTime().Ticks;
    }
    FileStream fs = new FileStream(filenameInts, FileMode.Create);
    BinaryWriter bw = new BinaryWriter(fs);
    bw.Write(ticks.Length);
    foreach (var tick in ticks)
        bw.Write(tick);

    bw.Close();
    Console.WriteLine("Saved dates...");
}

private static void RestoreDatesAsInts()
{
    TimeZoneInfo.ClearCachedData();
    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}");
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
    FileStream fs = new FileStream(filenameInts, FileMode.Open);
    BinaryReader br = new BinaryReader(fs);
    int items;
    DateTime[] dates;

    try
    {
        items = br.ReadInt32();
        dates = new DateTime[items];

        for (int ctr = 0; ctr < items; ctr++)
        {
            long ticks = br.ReadInt64();
            dates[ctr] = new DateTime(ticks).ToLocalTime();
        }
    }
    catch (EndOfStreamException)
    {
        Console.WriteLine("File corruption detected. Unable to restore data...");
        return;
    }
    catch (IOException)
    {
        Console.WriteLine("Unspecified I/O error. Unable to restore data...");
        return;
    }
    // Thrown during array initialization.
    catch (OutOfMemoryException)
    {
        Console.WriteLine("File corruption detected. Unable to restore data...");
        return;
    }
    finally
    {
        br.Close();
    }

    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:");
    foreach (var value in dates)
        Console.WriteLine(value.ToString("f"));

    Console.WriteLine("Restored dates...");
}
// When saved on an en-US system, the example displays the following output:
//       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
//       The dates on an en-US system:
//       Saturday, June 14, 2014 6:32 AM
//       Thursday, July 10, 2014 11:49 PM
//       Saturday, January 10, 2015 1:16 AM
//       Saturday, December 20, 2014 9:45 PM
//       Monday, June 02, 2014 3:14 PM
//       Saved dates...
//
// When restored on an en-GB system, the example displays the following output:
//       Current Time Zone: (UTC) Dublin, Edinburgh, Lisbon, London
//       The dates on an en-GB system:
//       14 June 2014 14:32
//       11 July 2014 07:49
//       10 January 2015 09:16
//       21 December 2014 05:45
//       02 June 2014 23:14
//       Restored dates...
Public Sub PersistAsIntegers()
    SaveDatesAsIntegers()
    RestoreDatesAsIntegers()
End Sub

Private Sub SaveDatesAsIntegers()
    Dim dates() As Date = {#6/14/2014 6:32AM#, #7/10/2014 11:49PM#,
                          #1/10/2015 1:16AM#, #12/20/2014 9:45PM#,
                          #6/2/2014 3:14PM#}

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    Dim ticks(dates.Length - 1) As Long
    For ctr As Integer = 0 To dates.Length - 1
        Console.WriteLine(dates(ctr).ToString("f"))
        ticks(ctr) = dates(ctr).ToUniversalTime().Ticks
    Next
    Dim fs As New FileStream(filenameInts, FileMode.Create)
    Dim bw As New BinaryWriter(fs)
    bw.Write(ticks.Length)
    For Each tick In ticks
        bw.Write(tick)
    Next
    bw.Close()
    Console.WriteLine("Saved dates...")
End Sub

Private Sub RestoreDatesAsIntegers()
    TimeZoneInfo.ClearCachedData()
    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB")
    Dim fs As New FileStream(filenameInts, FileMode.Open)
    Dim br As New BinaryReader(fs)
    Dim items As Integer
    Dim dates() As DateTime

    Try
        items = br.ReadInt32()
        ReDim dates(items - 1)

        For ctr As Integer = 0 To items - 1
            Dim ticks As Long = br.ReadInt64()
            dates(ctr) = New DateTime(ticks).ToLocalTime()
        Next
    Catch e As EndOfStreamException
        Console.WriteLine("File corruption detected. Unable to restore data...")
        Exit Sub
    Catch e As IOException
        Console.WriteLine("Unspecified I/O error. Unable to restore data...")
        Exit Sub
    Catch e As OutOfMemoryException     'Thrown in array initialization.
        Console.WriteLine("File corruption detected. Unable to restore data...")
        Exit Sub
    Finally
        br.Close()
    End Try

    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For Each value In dates
        Console.WriteLine(value.ToString("f"))
    Next
    Console.WriteLine("Restored dates...")
End Sub
' When saved on an en-US system, the example displays the following output:
'       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
'       The dates on an en-US system:
'       Saturday, June 14, 2014 6:32 AM
'       Thursday, July 10, 2014 11:49 PM
'       Saturday, January 10, 2015 1:16 AM
'       Saturday, December 20, 2014 9:45 PM
'       Monday, June 02, 2014 3:14 PM
'       Saved dates...
'
' When restored on an en-GB system, the example displays the following output:
'       Current Time Zone: (UTC) Dublin, Edinburgh, Lisbon, London
'       The dates on an en-GB system:
'       14 June 2014 14:32
'       11 July 2014 07:49
'       10 January 2015 09:16
'       21 December 2014 05:45
'       02 June 2014 23:14
'       Restored dates...

Сериализация значения даты и времениSerializing DateTime values

Можно сохранить DateTime значения посредством сериализации в поток или файл и затем восстановить их с помощью десериализации.You can persist DateTime values through serialization to a stream or file, and then restore them through deserialization. DateTime данные сериализуются в определенном формате указанного объекта.DateTime data is serialized in some specified object format. Объекты восстанавливаются при десериализации.The objects are restored when they are deserialized. Модуль форматирования или сериализатор, такие как XmlSerializer или BinaryFormatter, обрабатывает процесс сериализации и десериализации.A formatter or serializer, such as XmlSerializer or BinaryFormatter, handles the process of serialization and deserialization. Дополнительные сведения о сериализации и типы сериализации, поддерживаемым платформой .NET Framework, см. в разделе сериализации.For more information about serialization and the types of serialization supported by the .NET Framework, see Serialization.

В следующем примере используется XmlSerializer классы для сериализации и десериализации DateTime значения.The following example uses the XmlSerializer class to serialize and deserialize DateTime values. Значения представляют все дни високосный год в двадцать первом веке.The values represent all leap year days in the twenty-first century. Выходные данные представляет результат, если пример выполняется в системе, в которой текущий язык — английский (Соединенное Королевство).The output represents the result if the example is run on a system whose current culture is English (Great Britain). Так как десериализован DateTime объект сам код не должен обрабатывать культурные различия в форматы даты и времени.Because you've deserialized the DateTime object itself, the code doesn't have to handle cultural differences in date and time formats.

public static void PersistAsXML()
{
    // Serialize the data.
    List<DateTime> leapYears = new List<DateTime>();
    for (int year = 2000; year <= 2100; year += 4)
    {
        if (DateTime.IsLeapYear(year))
            leapYears.Add(new DateTime(year, 2, 29));
    }
    DateTime[] dateArray = leapYears.ToArray();

    XmlSerializer serializer = new XmlSerializer(dateArray.GetType());
    TextWriter sw = new StreamWriter(filenameXml);

    try
    {
        serializer.Serialize(sw, dateArray);
    }
    catch (InvalidOperationException e)
    {
        Console.WriteLine(e.InnerException.Message);
    }
    finally
    {
        if (sw != null) sw.Close();
    }

    // Deserialize the data.
    DateTime[] deserializedDates;
    using (FileStream fs = new FileStream(filenameXml, FileMode.Open))
    {
        deserializedDates = (DateTime[])serializer.Deserialize(fs);
    }

    // Display the dates.
    Console.WriteLine($"Leap year days from 2000-2100 on an {Thread.CurrentThread.CurrentCulture.Name} system:");
    int nItems = 0;
    foreach (var dat in deserializedDates)
    {
        Console.Write($"   {dat:d}     ");
        nItems++;
        if (nItems % 5 == 0)
            Console.WriteLine();
    }
}
// The example displays the following output:
//    Leap year days from 2000-2100 on an en-GB system:
//       29/02/2000       29/02/2004       29/02/2008       29/02/2012       29/02/2016
//       29/02/2020       29/02/2024       29/02/2028       29/02/2032       29/02/2036
//       29/02/2040       29/02/2044       29/02/2048       29/02/2052       29/02/2056
//       29/02/2060       29/02/2064       29/02/2068       29/02/2072       29/02/2076
//       29/02/2080       29/02/2084       29/02/2088       29/02/2092       29/02/2096
Public Sub PersistAsXml()
    ' Serialize the data.
    Dim leapYears As New List(Of DateTime)()
    For year As Integer = 2000 To 2100 Step 4
        If Date.IsLeapYear(year) Then
            leapYears.Add(New Date(year, 2, 29))
        End If
    Next
    Dim dateArray() As DateTime = leapYears.ToArray()

    Dim serializer As New XmlSerializer(dateArray.GetType())
    Dim sw As TextWriter = New StreamWriter(filenameXml)

    Try
        serializer.Serialize(sw, dateArray)
    Catch e As InvalidOperationException
        Console.WriteLine(e.InnerException.Message)
    Finally
        If sw IsNot Nothing Then sw.Close()
    End Try

    ' Deserialize the data.
    Dim deserializedDates() As Date
    Using fs As New FileStream(filenameXml, FileMode.Open)
        deserializedDates = CType(serializer.Deserialize(fs), Date())
    End Using

    ' Display the dates.
    Console.WriteLine($"Leap year days from 2000-2100 on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    Dim nItems As Integer
    For Each dat In deserializedDates
        Console.Write($"   {dat:d}     ")
        nItems += 1
        If nItems Mod 5 = 0 Then Console.WriteLine()
    Next
End Sub
' The example displays the following output:
'    Leap year days from 2000-2100 on an en-GB system:
'       29/02/2000       29/02/2004       29/02/2008       29/02/2012       29/02/2016
'       29/02/2020       29/02/2024       29/02/2028       29/02/2032       29/02/2036
'       29/02/2040       29/02/2044       29/02/2048       29/02/2052       29/02/2056
'       29/02/2060       29/02/2064       29/02/2068       29/02/2072       29/02/2076
'       29/02/2080       29/02/2084       29/02/2088       29/02/2092       29/02/2096

Предыдущий пример не включает сведения о времени.The previous example doesn't include time information. Если DateTime значение представляет момент времени и выражается в формате местного времени, преобразуйте его из местного времени в формат UTC до его сериализации путем вызова ToUniversalTime метод.If a DateTime value represents a moment in time and is expressed as a local time, convert it from local time to UTC before serializing it by calling the ToUniversalTime method. После десериализации, преобразовать его от времени UTC в местное время, вызвав ToLocalTime метод.After you deserialize it, convert it from UTC to local time by calling the ToLocalTime method. В следующем примере используется BinaryFormatter класс для сериализации DateTime данных в системе в США. Тихоокеанском стандартном часовом поясе и десериализация в системе в США. Центральная стандартной зоны.The following example uses the BinaryFormatter class to serialize DateTime data on a system in the U.S. Pacific Standard Time zone and to deserialize it on a system in the U.S. Central Standard zone.

public static void PersistBinary()
{
    SaveDatesBinary();
    RestoreDatesBinary();
}

private static void SaveDatesBinary()
{
    DateTime[] dates = { new DateTime(2014, 6, 14, 6, 32, 0),
                   new DateTime(2014, 7, 10, 23, 49, 0),
                   new DateTime(2015, 1, 10, 1, 16, 0),
                   new DateTime(2014, 12, 20, 21, 45, 0),
                   new DateTime(2014, 6, 2, 15, 14, 0) };
    FileStream fs = new FileStream(filenameBin, FileMode.Create);
    BinaryFormatter bin = new BinaryFormatter();

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}");
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:");
    for (int ctr = 0; ctr < dates.Length; ctr++)
    {
        Console.WriteLine(dates[ctr].ToString("f"));
        dates[ctr] = dates[ctr].ToUniversalTime();
    }
    bin.Serialize(fs, dates);
    fs.Close();
    Console.WriteLine("Saved dates...");
}

private static void RestoreDatesBinary()
{
    TimeZoneInfo.ClearCachedData();
    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}");
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");

    FileStream fs = new FileStream(filenameBin, FileMode.Open);
    BinaryFormatter bin = new BinaryFormatter();
    DateTime[] dates = (DateTime[])bin.Deserialize(fs);
    fs.Close();

    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:");
    foreach (var value in dates)
        Console.WriteLine(value.ToLocalTime().ToString("f"));

    Console.WriteLine("Restored dates...");
}
// When saved on an en-US system, the example displays the following output:
//       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
//       The dates on an en-US system:
//       Saturday, June 14, 2014 6:32 AM
//       Thursday, July 10, 2014 11:49 PM
//       Saturday, January 10, 2015 1:16 AM
//       Saturday, December 20, 2014 9:45 PM
//       Monday, June 02, 2014 3:14 PM
//       Saved dates...
//
// When restored on an en-GB system, the example displays the following output:
//       Current Time Zone: (UTC-6:00) Central Time (US & Canada)
//       The dates on an en-GB system:
//       14 June 2014 08:32
//       11 July 2014 01:49
//       10 January 2015 03:16
//       20 December 2014 23:45
//       02 June 2014 17:14
//       Restored dates...
Public Sub PersistBinary()
    SaveDatesBinary()
    RestoreDatesBinary()
End Sub

Private Sub SaveDatesBinary()
    Dim dates() As Date = {#6/14/2014 6:32AM#, #7/10/2014 11:49PM#,
                          #1/10/2015 1:16AM#, #12/20/2014 9:45PM#,
                          #6/2/2014 3:14PM#}
    Dim fs As New FileStream(filenameBin, FileMode.Create)
    Dim bin As New BinaryFormatter()

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Console.WriteLine("The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For ctr As Integer = 0 To dates.Length - 1
        Console.WriteLine(dates(ctr).ToString("f"))
        dates(ctr) = dates(ctr).ToUniversalTime()
    Next
    bin.Serialize(fs, dates)
    fs.Close()
    Console.WriteLine("Saved dates...")
End Sub

Private Sub RestoreDatesBinary()
    TimeZoneInfo.ClearCachedData()
    Console.WriteLine("Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB")

    Dim fs As New FileStream(filenameBin, FileMode.Open)
    Dim bin As New BinaryFormatter()
    Dim dates() As DateTime = DirectCast(bin.Deserialize(fs), Date())
    fs.Close()

    Console.WriteLine("The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For Each value In dates
        Console.WriteLine(value.ToLocalTime().ToString("f"))
    Next
    Console.WriteLine("Restored dates...")
End Sub
' When saved on an en-US system, the example displays the following output:
'       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
'       The dates on an en-US system:
'       Saturday, June 14, 2014 6:32 AM
'       Thursday, July 10, 2014 11:49 PM
'       Saturday, January 10, 2015 1:16 AM
'       Saturday, December 20, 2014 9:45 PM
'       Monday, June 02, 2014 3:14 PM
'       Saved dates...
'
' When restored on an en-GB system, the example displays the following output:
'       Current Time Zone: (UTC-6:00) Central Time (US & Canada)
'       The dates on an en-GB system:
'       14 June 2014 08:32
'       11 July 2014 01:49
'       10 January 2015 03:16
'       20 December 2014 11:45
'       02 June 2014 17:14
'       Restored dates...

Сериализация данных даты и времени и часового поясаSerializing DateTime and time zone data

Предполагается, что все предыдущие примеры DateTime значения выражаются в виде местного времени.The previous examples all assumed that DateTime values are expressed as local times. Код преобразовать значения между временем UTC и местным временем, поэтому они отражают тот же момент времени на исходных и целевых систем.The code converted the values between UTC and local time so they reflect the same moment in time on the source and target systems. DateTime значения также могут отражать моменты времени в формате UTC и часовой пояс, отличный от local.DateTime values may also reflect moments in time in a time zone other than local and UTC. Так как DateTime структура не часовыми поясами, вам нужно сериализовать оба DateTime значение и TimeZoneInfo объекта, представляющего его часовой пояс.Because the DateTime structure is not time zone-aware, you have to serialize both the DateTime value and the TimeZoneInfo object that represents its time zone. Создание типа, поля которых включают оба DateTime значение и его часовым поясом.Create a type whose fields include both the DateTime value and its time zone. В следующем примере определяется DateWithTimeZone структуры.The following example defines a DateWithTimeZone structure.

using System;

namespace DateTimeExtensions
{
    [Serializable]
    public struct DateWithTimeZone
    {
        private TimeZoneInfo tz;
        private DateTime dt;

        public DateWithTimeZone(DateTime dateValue, TimeZoneInfo timeZone)
        {
            dt = dateValue;
            if (timeZone == null)
                tz = TimeZoneInfo.Local;
            else
                tz = timeZone;
        }

        public TimeZoneInfo TimeZone
        {
            get { return (tz); }
            set { tz = value; }
        }

        public DateTime DateTime
        {
            get { return (dt); }
            set { dt = value; }
        }
    }
}
Namespace DateTimeExtensions
    <Serializable> Public Structure DateWithTimeZone
        Private tz As TimeZoneInfo
        Private dt As DateTime

        Public Sub New(dateValue As DateTime, timeZone As TimeZoneInfo)
            dt = dateValue
            If timeZone Is Nothing Then
                tz = TimeZoneInfo.Local
            Else
                tz = timeZone
            End If
        End Sub

        Public Property TimeZone As TimeZoneInfo
            Get
                Return tz
            End Get
            Set
                tz = Value
            End Set
        End Property

        Public Property DateTime As Date
            Get
                Return dt
            End Get
            Set
                dt = Value
            End Set
        End Property
    End Structure
End Namespace

Важно!

DateWithTimeZone Структура применяется в следующих двух примерах, в которых сериализации и десериализации массив DateWithTimeZone объектов.The DateWithTimeZone structure is used in the next two examples, which serialize and deserialize an array of DateWithTimeZone objects. Источник для всего набора примеров из этой статьи можно просмотреть в любом Visual Basic или C# из репозитории docs в GitHub.You can view the source for the entire set of examples from this article in either Visual Basic or C# from the docs repository on GitHub.

С помощью DateWithTimeZone структуры, затем можно сохранить дату и время, а также сведения о часовом поясе.By using the DateWithTimeZone structure, you can then persist date and time along with time zone information. В следующем примере используется BinaryFormatter класс для сериализации массива DateWithTimeZone объектов.The following example uses the BinaryFormatter class to serialize an array of DateWithTimeZone objects.

public static void SaveDateWithTimeZone()
{
    DateWithTimeZone[] dates = { new DateWithTimeZone(new DateTime(2014, 8, 9, 19, 30, 0),
                              TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")),
                          new DateWithTimeZone(new DateTime(2014, 8, 15, 19, 0, 0),
                              TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time")),
                          new DateWithTimeZone(new DateTime(2014, 8, 22, 19, 30, 0),
                              TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")),
                          new DateWithTimeZone(new DateTime(2014, 8, 28, 19, 0, 0),
                              TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")) };
    FileStream fs = new FileStream(@".\Schedule.bin", FileMode.Create);
    BinaryFormatter formatter = new BinaryFormatter();
    try
    {
        formatter.Serialize(fs, dates);
        // Display dates.
        foreach (var date in dates)
        {
            TimeZoneInfo tz = date.TimeZone;
            Console.WriteLine($"{date.DateTime} {(tz.IsDaylightSavingTime(date.DateTime) ? tz.DaylightName : tz.StandardName)}");
        }
    }
    catch (SerializationException e)
    {
        Console.WriteLine($"Serialization failed. Reason: {e.Message}");
    }
    finally
    {
        if (fs != null) fs.Close();
    }
}
// The example displays the following output:
//       8/9/2014 7:30:00 PM Eastern Daylight Time
//       8/15/2014 7:00:00 PM Pacific Daylight Time
//       8/22/2014 7:30:00 PM Eastern Daylight Time
//       8/28/2014 7:00:00 PM Eastern Daylight Time
Public Sub SaveDateWithTimeZone()
    Dim dates() As DateWithTimeZone = {New DateWithTimeZone(#8/9/2014 7:30PM#,
                                      TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")),
                                  New DateWithTimeZone(#8/15/2014 7:00PM#,
                                      TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time")),
                                  New DateWithTimeZone(#8/22/2014 7:30PM#,
                                      TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")),
                                  New DateWithTimeZone(#8/28/2014 7:00PM#,
                                      TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"))}
    Dim fs As New FileStream(".\Schedule.bin", FileMode.Create)
    Dim formatter As New BinaryFormatter()
    Try
        formatter.Serialize(fs, dates)
    Catch e As SerializationException
        Console.WriteLine($"Serialization failed. Reason: {e.Message}")
    Finally
        If fs IsNot Nothing Then fs.Close()
    End Try
    ' Display dates.
    For Each dateInfo In dates
        Dim tz As TimeZoneInfo = dateInfo.TimeZone
        Console.WriteLine($"{dateInfo.DateTime} {If(tz.IsDaylightSavingTime(dateInfo.DateTime), tz.DaylightName, tz.StandardName)}")
    Next
End Sub
' The example displays the following output:
'       8/9/2014 7:30:00 PM Eastern Daylight Time
'       8/15/2014 7:00:00 PM Pacific Daylight Time
'       8/22/2014 7:30:00 PM Eastern Daylight Time
'       8/28/2014 7:00:00 PM Eastern Daylight Time

В следующем примере затем вызывается BinaryFormatter.Deserialize метод для десериализации.The following example then calls the BinaryFormatter.Deserialize method to deserialize it.

public static void RestoreDateWithTimeZone()
{
    const string filename = @".\Schedule.bin";
    FileStream fs;
    if (File.Exists(filename))
        fs = new FileStream(filename, FileMode.Open);
    else
    {
        Console.WriteLine("Unable to find file to deserialize.");
        return;
    }

    BinaryFormatter formatter = new BinaryFormatter();
    DateWithTimeZone[] dates;
    try
    {
        dates = (DateWithTimeZone[])formatter.Deserialize(fs);
        // Display dates.
        foreach (var date in dates)
        {
            TimeZoneInfo tz = date.TimeZone;
            Console.WriteLine($"{ date.DateTime} {(tz.IsDaylightSavingTime(date.DateTime) ? tz.DaylightName : tz.StandardName)}");
        }
    }
    catch (SerializationException e)
    {
        Console.WriteLine($"Deserialization failed. Reason: {e.Message}");
    }
    finally
    {
        if (fs != null) fs.Close();
    }
}
// The example displays the following output:
//       8/9/2014 7:30:00 PM Eastern Daylight Time
//       8/15/2014 7:00:00 PM Pacific Daylight Time
//       8/22/2014 7:30:00 PM Eastern Daylight Time
//       8/28/2014 7:00:00 PM Eastern Daylight Time
Public Sub RestoreDateWithTimeZone()
    Dim fs As FileStream
    If File.Exists(filename) Then
        fs = New FileStream(filename, FileMode.Open)
    Else
        Console.WriteLine("Unable to find file to deserialize.")
        Exit Sub
    End If

    Dim formatter As New BinaryFormatter()
    Dim dates() As DateWithTimeZone = Nothing
    Try
        dates = DirectCast(formatter.Deserialize(fs), DateWithTimeZone())
        ' Display dates.
        For Each dateInfo In dates
            Dim tz As TimeZoneInfo = dateInfo.TimeZone
            Console.WriteLine($"{dateInfo.DateTime} {If(tz.IsDaylightSavingTime(dateInfo.DateTime), tz.DaylightName, tz.StandardName)}")
        Next
    Catch e As SerializationException
        Console.WriteLine("Deserialization failed. Reason: {e.Message}")
    Finally
        If fs IsNot Nothing Then fs.Close()
    End Try
End Sub
' The example displays the following output:
'       8/9/2014 7:30:00 PM Eastern Daylight Time
'       8/15/2014 7:00:00 PM Pacific Daylight Time
'       8/22/2014 7:30:00 PM Eastern Daylight Time
'       8/28/2014 7:00:00 PM Eastern Daylight Time

Vs даты и времени. TimeSpanDateTime vs. TimeSpan

DateTime И TimeSpan типы значений отличаются тем, что DateTime представляет момент времени, а TimeSpan представляет интервал времени.The DateTime and TimeSpan value types differ in that a DateTime represents an instant in time whereas a TimeSpan represents a time interval. Можно вычесть один экземпляр DateTime из другого для получения TimeSpan объект, представляющий интервал времени между ними.You can subtract one instance of DateTime from another to obtain a TimeSpan object that represents the time interval between them. Или можно добавить положительное TimeSpan текущему DateTime для получения DateTime значение, представляющее дату в будущем.Or you could add a positive TimeSpan to the current DateTime to obtain a DateTime value that represents a future date.

Можно добавить или вычесть интервал от DateTime объекта.You can add or subtract a time interval from a DateTime object. Интервалы времени может быть положительным или отрицательным, и они могут быть выражены в единицы, такие как количество тактов, секундах или как TimeSpan объекта.Time intervals can be negative or positive, and they can be expressed in units such as ticks, seconds, or as a TimeSpan object.

Сравнение на равенство в пределах допускаComparing for equality within tolerance

Сравнения на равенство для DateTime значения являются точными.Equality comparisons for DateTime values are exact. Это означает, что два значения должны быть выражены как же количество тактов, считается равны.That means two values must be expressed as the same number of ticks to be considered equal. Точность часто является лишние или даже неверен для многих приложений.That precision is often unecessary or even incorrect for many applications. Часто требуется для проверки, если DateTime объекты являются примерно равно.Often, you want to test if DateTime objects are roughly equal.

Следующий пример демонстрирует сравнение примерно эквивалентный DateTime .The following example demonstrates how to compare roughly equivalent DateTime . Он принимает небольшую погрешность при объявлении их равными.It accepts a small margin of difference when declaring them equal.

public static bool RoughlyEquals(DateTime time, DateTime timeWithWindow, int windowInSeconds, int frequencyInSeconds)
{
    long delta = (long)((TimeSpan)(timeWithWindow - time)).TotalSeconds % frequencyInSeconds;
    delta = delta > windowInSeconds ? frequencyInSeconds - delta : delta;
    return Math.Abs(delta) < windowInSeconds;
}

public static void TestRoughlyEquals()
{
    int window = 10;
    int freq = 60 * 60 * 2; // 2 hours;

    DateTime d1 = DateTime.Now;

    DateTime d2 = d1.AddSeconds(2 * window);
    DateTime d3 = d1.AddSeconds(-2 * window);
    DateTime d4 = d1.AddSeconds(window / 2);
    DateTime d5 = d1.AddSeconds(-window / 2);

    DateTime d6 = (d1.AddHours(2)).AddSeconds(2 * window);
    DateTime d7 = (d1.AddHours(2)).AddSeconds(-2 * window);
    DateTime d8 = (d1.AddHours(2)).AddSeconds(window / 2);
    DateTime d9 = (d1.AddHours(2)).AddSeconds(-window / 2);

    Console.WriteLine($"d1 ({d1}) ~= d1 ({d1}): {RoughlyEquals(d1, d1, window, freq)}");
    Console.WriteLine($"d1 ({d1}) ~= d2 ({d2}): {RoughlyEquals(d1, d2, window, freq)}");
    Console.WriteLine($"d1 ({d1}) ~= d3 ({d3}): {RoughlyEquals(d1, d3, window, freq)}");
    Console.WriteLine($"d1 ({d1}) ~= d4 ({d4}): {RoughlyEquals(d1, d4, window, freq)}");
    Console.WriteLine($"d1 ({d1}) ~= d5 ({d5}): {RoughlyEquals(d1, d5, window, freq)}");

    Console.WriteLine($"d1 ({d1}) ~= d6 ({d6}): {RoughlyEquals(d1, d6, window, freq)}");
    Console.WriteLine($"d1 ({d1}) ~= d7 ({d7}): {RoughlyEquals(d1, d7, window, freq)}");
    Console.WriteLine($"d1 ({d1}) ~= d8 ({d8}): {RoughlyEquals(d1, d8, window, freq)}");
    Console.WriteLine($"d1 ({d1}) ~= d9 ({d9}): {RoughlyEquals(d1, d9, window, freq)}");
}
// The example displays output similar to the following:
//    d1 (1/28/2010 9:01:26 PM) ~= d1 (1/28/2010 9:01:26 PM): True
//    d1 (1/28/2010 9:01:26 PM) ~= d2 (1/28/2010 9:01:46 PM): False
//    d1 (1/28/2010 9:01:26 PM) ~= d3 (1/28/2010 9:01:06 PM): False
//    d1 (1/28/2010 9:01:26 PM) ~= d4 (1/28/2010 9:01:31 PM): True
//    d1 (1/28/2010 9:01:26 PM) ~= d5 (1/28/2010 9:01:21 PM): True
//    d1 (1/28/2010 9:01:26 PM) ~= d6 (1/28/2010 11:01:46 PM): False
//    d1 (1/28/2010 9:01:26 PM) ~= d7 (1/28/2010 11:01:06 PM): False
//    d1 (1/28/2010 9:01:26 PM) ~= d8 (1/28/2010 11:01:31 PM): True
//    d1 (1/28/2010 9:01:26 PM) ~= d9 (1/28/2010 11:01:21 PM): True
Public Shared Function RoughlyEquals(time As DateTime, timeWithWindow As DateTime,
                             windowInSeconds As Integer,
                             frequencyInSeconds As Integer) As Boolean
    Dim delta As Long = (timeWithWindow.Subtract(time)).TotalSeconds _
                                            Mod frequencyInSeconds

    If delta > windowInSeconds Then
        delta = frequencyInSeconds - delta
    End If

    Return Math.Abs(delta) < windowInSeconds
End Function

Public Shared Sub TestRoughlyEquals()
    Dim window As Integer = 10
    Dim freq As Integer = 60 * 60 * 2 ' 2 hours;
    Dim d1 As DateTime = DateTime.Now

    Dim d2 As DateTime = d1.AddSeconds((2 * window))
    Dim d3 As DateTime = d1.AddSeconds((-2 * window))
    Dim d4 As DateTime = d1.AddSeconds((window / 2))
    Dim d5 As DateTime = d1.AddSeconds((-window / 2))

    Dim d6 As DateTime = d1.AddHours(2).AddSeconds((2 * window))
    Dim d7 As DateTime = d1.AddHours(2).AddSeconds((-2 * window))
    Dim d8 As DateTime = d1.AddHours(2).AddSeconds((window / 2))
    Dim d9 As DateTime = d1.AddHours(2).AddSeconds((-window / 2))

    Console.WriteLine($"d1 ({d1}) ~= d1 ({d1}): {RoughlyEquals(d1, d1, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d2 ({d2}): {RoughlyEquals(d1, d2, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d3 ({d3}): {RoughlyEquals(d1, d3, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d4 ({d4}): {RoughlyEquals(d1, d4, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d5 ({d5}): {RoughlyEquals(d1, d5, window, freq)}")

    Console.WriteLine($"d1 ({d1}) ~= d6 ({d6}): {RoughlyEquals(d1, d6, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d7 ({d7}): {RoughlyEquals(d1, d7, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d8 ({d8}): {RoughlyEquals(d1, d8, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d9 ({d9}): {RoughlyEquals(d1, d9, window, freq)}")
End Sub
' The example displays output similar to the following:
'    d1 (1/28/2010 9:01:26 PM) ~= d1 (1/28/2010 9:01:26 PM): True
'    d1 (1/28/2010 9:01:26 PM) ~= d2 (1/28/2010 9:01:46 PM): False
'    d1 (1/28/2010 9:01:26 PM) ~= d3 (1/28/2010 9:01:06 PM): False
'    d1 (1/28/2010 9:01:26 PM) ~= d4 (1/28/2010 9:01:31 PM): True
'    d1 (1/28/2010 9:01:26 PM) ~= d5 (1/28/2010 9:01:21 PM): True
'    d1 (1/28/2010 9:01:26 PM) ~= d6 (1/28/2010 11:01:46 PM): False
'    d1 (1/28/2010 9:01:26 PM) ~= d7 (1/28/2010 11:01:06 PM): False
'    d1 (1/28/2010 9:01:26 PM) ~= d8 (1/28/2010 11:01:31 PM): True
'    d1 (1/28/2010 9:01:26 PM) ~= d9 (1/28/2010 11:01:21 PM): True

Вопросы взаимодействия COMCOM interop considerations

Объект DateTime значение, которое передается в COM-приложения, а затем обратно к управляемому приложению, считается, что цикл обработки.A DateTime value that is transferred to a COM application, then is transferred back to a managed application, is said to round-trip. Тем не менее DateTime не поддерживает значение, которое указывает только время приема-передачи, как вы могли предположить.However, a DateTime value that specifies only a time does not round-trip as you might expect.

Если вы прием-передача только время, например 15: 00, конечная дата и время – 30 декабря 1899 года нашей эрыIf you round-trip only a time, such as 3 P.M., the final date and time is December 30, 1899 C.E. в 3:00, а не 1 января 0001 года нашей эрыat 3:00 P.M., instead of January, 1, 0001 C.E. в 15:00:00at 3:00 P.M. .NET Framework и COM предполагается даты по умолчанию, если указан только время.The .NET Framework and COM assume a default date when only a time is specified. Однако система COM предполагает базовую дату 30 декабря 1899 года нашей эры, хотя .NET Framework предполагает базовую дату 1 января 0001 года нашей эрыHowever, the COM system assumes a base date of December 30, 1899 C.E., while the .NET Framework assumes a base date of January, 1, 0001 C.E.

Когда только время передается из .NET Framework в COM, специальная обработка выполняется, преобразует время в формате, используемого в COM.When only a time is passed from the .NET Framework to COM, special processing is performed that converts the time to the format used by COM. Когда только время передается из COM в .NET Framework, никакой специальной обработки не выполняется, поскольку, повредит допустимые даты и времени до 30 декабря 1899 года.When only a time is passed from COM to the .NET Framework, no special processing is performed because that would corrupt legitimate dates and times on or before December 30, 1899. Если даты начинается круговой путь из COM, .NET Framework и COM сохраняют дату.If a date starts its round-trip from COM, the .NET Framework and COM preserve the date.

Поведение платформы .NET Framework и COM означает, что если ваши приложения циклов приема-передачи DateTime , указывает только время, приложение должно обязательно для изменения или проигнорировать ошибочные даты с последней DateTime объекта.The behavior of the .NET Framework and COM means that if your application round-trips a DateTime that only specifies a time, your application must remember to modify or ignore the erroneous date from the final DateTime object.

Конструкторы

DateTime(Int64) DateTime(Int64) DateTime(Int64) DateTime(Int64)

Инициализирует новый экземпляр структуры DateTime заданным числом тактов. Initializes a new instance of the DateTime structure to a specified number of ticks.

DateTime(Int64, DateTimeKind) DateTime(Int64, DateTimeKind) DateTime(Int64, DateTimeKind) DateTime(Int64, DateTimeKind)

Инициализирует новый экземпляр структуры DateTime заданным числом тактов и временем UTC или местным временем. Initializes a new instance of the DateTime structure to a specified number of ticks and to Coordinated Universal Time (UTC) or local time.

DateTime(Int32, Int32, Int32) DateTime(Int32, Int32, Int32) DateTime(Int32, Int32, Int32) DateTime(Int32, Int32, Int32)

Инициализирует новый экземпляр структуры DateTime заданными значениями года, месяца и дня. Initializes a new instance of the DateTime structure to the specified year, month, and day.

DateTime(Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Calendar)

Инициализирует новый экземпляр структуры DateTime заданным годом, месяцем и днем для указанного календаря. Initializes a new instance of the DateTime structure to the specified year, month, and day for the specified calendar.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32) DateTime(Int32, Int32, Int32, Int32, Int32, Int32) DateTime(Int32, Int32, Int32, Int32, Int32, Int32) DateTime(Int32, Int32, Int32, Int32, Int32, Int32)

Инициализирует новый экземпляр структуры DateTime заданным годом, месяцем, днем, часом, минутой и секундой. Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, and second.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind)

Инициализирует новый экземпляр структуры DateTime заданными значениями года, месяца, дня, часа, минуты и секунды, а также временем UTC или местным временем. Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, second, and Coordinated Universal Time (UTC) or local time.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Calendar)

Инициализирует новый экземпляр структуры DateTime указанным годом, месяцем, днем, часом, минутой и секундой для заданного календаря. Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, and second for the specified calendar.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32)

Инициализирует новый экземпляр структуры DateTime заданным годом, месяцем, днем, часом, минутой, секундой и миллисекундой. Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, second, and millisecond.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind)

Инициализирует новый экземпляр структуры DateTime заданными значениями года, месяца, дня, часа, минуты, секунды и миллисекунды, а также временем UTC или местным временем. Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, second, millisecond, and Coordinated Universal Time (UTC) or local time.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar)

Инициализирует новый экземпляр структуры DateTime указанным годом, месяцем, днем, часом, минутой, секундой и миллисекундой для заданного календаря. Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, second, and millisecond for the specified calendar.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar, DateTimeKind)

Инициализирует новый экземпляр структуры DateTime заданными значениями года, месяца, дня, часа, минуты, секунды и миллисекунды, а также временем UTC или местным временем для заданного календаря. Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, second, millisecond, and Coordinated Universal Time (UTC) or local time for the specified calendar.

Поля

MaxValue MaxValue MaxValue MaxValue

Представляет наибольшее возможное значение типа DateTime. Represents the largest possible value of DateTime. Это поле доступно только для чтения. This field is read-only.

MinValue MinValue MinValue MinValue

Представляет минимально допустимое значение типа DateTime. Represents the smallest possible value of DateTime. Это поле доступно только для чтения. This field is read-only.

UnixEpoch UnixEpoch UnixEpoch UnixEpoch

Свойства

Date Date Date Date

Возвращает компоненту даты этого экземпляра. Gets the date component of this instance.

Day Day Day Day

Возвращает день месяца, представленный этим экземпляром. Gets the day of the month represented by this instance.

DayOfWeek DayOfWeek DayOfWeek DayOfWeek

Возвращает день недели, представленный этим экземпляром. Gets the day of the week represented by this instance.

DayOfYear DayOfYear DayOfYear DayOfYear

Возвращает день года, представленный этим экземпляром. Gets the day of the year represented by this instance.

Hour Hour Hour Hour

Возвращает компонент часа даты, представленной этим экземпляром. Gets the hour component of the date represented by this instance.

Kind Kind Kind Kind

Возвращает значение, указывающее, на каком времени основано время, представленное этим экземпляром: местном, UTC или ни на том, ни на другом. Gets a value that indicates whether the time represented by this instance is based on local time, Coordinated Universal Time (UTC), or neither.

Millisecond Millisecond Millisecond Millisecond

Возвращает компонент миллисекунд для даты, представленной в данном экземпляре. Gets the milliseconds component of the date represented by this instance.

Minute Minute Minute Minute

Возвращает компонент минуты даты, представленной этим экземпляром. Gets the minute component of the date represented by this instance.

Month Month Month Month

Возвращает компонент месяца даты, представленной этим экземпляром. Gets the month component of the date represented by this instance.

Now Now Now Now

Возвращает объект DateTime, которому присвоены текущие дата и время данного компьютера, выраженные как местное время. Gets a DateTime object that is set to the current date and time on this computer, expressed as the local time.

Second Second Second Second

Возвращает компонент секунды даты, представленной этим экземпляром. Gets the seconds component of the date represented by this instance.

Ticks Ticks Ticks Ticks

Возвращает число тактов, которое представляет дату и время этого экземпляра. Gets the number of ticks that represent the date and time of this instance.

TimeOfDay TimeOfDay TimeOfDay TimeOfDay

Возвращает время дня для этого экземпляра. Gets the time of day for this instance.

Today Today Today Today

Возвращает текущую дату. Gets the current date.

UtcNow UtcNow UtcNow UtcNow

Возвращает объект DateTime, которому присвоены текущие дата и время данного компьютера, выраженные в формате UTC. Gets a DateTime object that is set to the current date and time on this computer, expressed as the Coordinated Universal Time (UTC).

Year Year Year Year

Возвращает компонент года даты, представленной этим экземпляром. Gets the year component of the date represented by this instance.

Методы

Add(TimeSpan) Add(TimeSpan) Add(TimeSpan) Add(TimeSpan)

Возвращает новый объект DateTime, добавляющий значение заданного объекта TimeSpan к значению данного экземпляра. Returns a new DateTime that adds the value of the specified TimeSpan to the value of this instance.

AddDays(Double) AddDays(Double) AddDays(Double) AddDays(Double)

Возвращает новый объект DateTime, добавляющий заданное число дней к значению данного экземпляра. Returns a new DateTime that adds the specified number of days to the value of this instance.

AddHours(Double) AddHours(Double) AddHours(Double) AddHours(Double)

Возвращает новый объект DateTime, добавляющий заданное число часов к значению данного экземпляра. Returns a new DateTime that adds the specified number of hours to the value of this instance.

AddMilliseconds(Double) AddMilliseconds(Double) AddMilliseconds(Double) AddMilliseconds(Double)

Возвращает новый объект DateTime, добавляющий заданное число миллисекунд к значению данного экземпляра. Returns a new DateTime that adds the specified number of milliseconds to the value of this instance.

AddMinutes(Double) AddMinutes(Double) AddMinutes(Double) AddMinutes(Double)

Возвращает новый объект DateTime, добавляющий заданное число минут к значению данного экземпляра. Returns a new DateTime that adds the specified number of minutes to the value of this instance.

AddMonths(Int32) AddMonths(Int32) AddMonths(Int32) AddMonths(Int32)

Возвращает новый объект DateTime, добавляющий заданное число месяцев к значению данного экземпляра. Returns a new DateTime that adds the specified number of months to the value of this instance.

AddSeconds(Double) AddSeconds(Double) AddSeconds(Double) AddSeconds(Double)

Возвращает новый объект DateTime, добавляющий заданное число секунд к значению данного экземпляра. Returns a new DateTime that adds the specified number of seconds to the value of this instance.

AddTicks(Int64) AddTicks(Int64) AddTicks(Int64) AddTicks(Int64)

Возвращает новый объект DateTime, добавляющий заданное число тактов к значению данного экземпляра. Returns a new DateTime that adds the specified number of ticks to the value of this instance.

AddYears(Int32) AddYears(Int32) AddYears(Int32) AddYears(Int32)

Возвращает новый объект DateTime, добавляющий заданное число лет к значению данного экземпляра. Returns a new DateTime that adds the specified number of years to the value of this instance.

Compare(DateTime, DateTime) Compare(DateTime, DateTime) Compare(DateTime, DateTime) Compare(DateTime, DateTime)

Сравнивает два экземпляра объекта DateTime и возвращает целое число, которое показывает, предшествует ли первый экземпляр второму, совпадает или расположен позже. Compares two instances of DateTime and returns an integer that indicates whether the first instance is earlier than, the same as, or later than the second instance.

CompareTo(DateTime) CompareTo(DateTime) CompareTo(DateTime) CompareTo(DateTime)

Сравнивает значение данного экземпляра с заданным значением DateTime и возвращает целочисленное значение, указывающее, когда наступает момент, заданный в данном экземпляре: раньше, позже или одновременно с моментом, заданным значением DateTime. Compares the value of this instance to a specified DateTime value and returns an integer that indicates whether this instance is earlier than, the same as, or later than the specified DateTime value.

CompareTo(Object) CompareTo(Object) CompareTo(Object) CompareTo(Object)

Сравнивает значение данного экземпляра с заданным объектом, содержащим указанное значение DateTime, и возвращает целочисленное значение, указывающее, когда наступает момент, заданный в данном экземпляре: раньше, позже или одновременно с моментом, заданным значением DateTime. Compares the value of this instance to a specified object that contains a specified DateTime value, and returns an integer that indicates whether this instance is earlier than, the same as, or later than the specified DateTime value.

DaysInMonth(Int32, Int32) DaysInMonth(Int32, Int32) DaysInMonth(Int32, Int32) DaysInMonth(Int32, Int32)

Возвращает число дней в указанном месяце указанного года. Returns the number of days in the specified month and year.

Equals(DateTime, DateTime) Equals(DateTime, DateTime) Equals(DateTime, DateTime) Equals(DateTime, DateTime)

Возвращает значение, указывающее, содержат ли два экземпляра DateTime одно и то же значение даты и времени. Returns a value indicating whether two DateTime instances have the same date and time value.

Equals(DateTime) Equals(DateTime) Equals(DateTime) Equals(DateTime)

Возвращает значение, указывающее, равно ли значение данного экземпляра значению указанного экземпляра DateTime. Returns a value indicating whether the value of this instance is equal to the value of the specified DateTime instance.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Возвращает значение, показывающее, равен ли данный экземпляр заданному объекту. Returns a value indicating whether this instance is equal to a specified object.

FromBinary(Int64) FromBinary(Int64) FromBinary(Int64) FromBinary(Int64)

Десериализует 64-разрядное значение и воссоздает исходный сериализованный объект DateTime. Deserializes a 64-bit binary value and recreates an original serialized DateTime object.

FromFileTime(Int64) FromFileTime(Int64) FromFileTime(Int64) FromFileTime(Int64)

Преобразует заданное время файла Windows в его эквивалент по местному времени. Converts the specified Windows file time to an equivalent local time.

FromFileTimeUtc(Int64) FromFileTimeUtc(Int64) FromFileTimeUtc(Int64) FromFileTimeUtc(Int64)

Преобразует заданное время файла Windows в его UTC-эквивалент. Converts the specified Windows file time to an equivalent UTC time.

FromOADate(Double) FromOADate(Double) FromOADate(Double) FromOADate(Double)

Возвращает объект DateTime, эквивалентный заданному значению даты OLE-автоматизации. Returns a DateTime equivalent to the specified OLE Automation Date.

GetDateTimeFormats() GetDateTimeFormats() GetDateTimeFormats() GetDateTimeFormats()

Преобразует значение этого экземпляра во все строковые представления, поддерживаемые стандартным форматом даты и времени. Converts the value of this instance to all the string representations supported by the standard date and time format specifiers.

GetDateTimeFormats(Char) GetDateTimeFormats(Char) GetDateTimeFormats(Char) GetDateTimeFormats(Char)

Преобразует значение этого экземпляра во все строковые представления, поддерживаемые указанным стандартным спецификатором формата даты и времени. Converts the value of this instance to all the string representations supported by the specified standard date and time format specifier.

GetDateTimeFormats(IFormatProvider) GetDateTimeFormats(IFormatProvider) GetDateTimeFormats(IFormatProvider) GetDateTimeFormats(IFormatProvider)

Преобразует значение этого экземпляра во все строковые представления, поддерживаемые стандартными спецификаторами формата даты и времени и указанными сведениями о форматировании, связанными с языком и региональными параметрами. Converts the value of this instance to all the string representations supported by the standard date and time format specifiers and the specified culture-specific formatting information.

GetDateTimeFormats(Char, IFormatProvider) GetDateTimeFormats(Char, IFormatProvider) GetDateTimeFormats(Char, IFormatProvider) GetDateTimeFormats(Char, IFormatProvider)

Преобразует значение этого экземпляра во все строковые представления, поддерживаемые указанным стандартным спецификатором формата даты и времени и сведениями о форматировании, связанными с языком и региональными параметрами. Converts the value of this instance to all the string representations supported by the specified standard date and time format specifier and culture-specific formatting information.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Возвращает хэш-код данного экземпляра. Returns the hash code for this instance.

GetTypeCode() GetTypeCode() GetTypeCode() GetTypeCode()

Возвращает TypeCode для типа значения DateTime. Returns the TypeCode for value type DateTime.

IsDaylightSavingTime() IsDaylightSavingTime() IsDaylightSavingTime() IsDaylightSavingTime()

Указывает, попадает ли данный экземпляр объекта DateTime в диапазон летнего времени для текущего часового пояса. Indicates whether this instance of DateTime is within the daylight saving time range for the current time zone.

IsLeapYear(Int32) IsLeapYear(Int32) IsLeapYear(Int32) IsLeapYear(Int32)

Возвращает сведения о том, является ли указанный год високосным. Returns an indication whether the specified year is a leap year.

Parse(String) Parse(String) Parse(String) Parse(String)

Преобразует строковое представление даты и времени в его эквивалент DateTime, используя соглашения для языка и региональных параметров текущего потока. Converts the string representation of a date and time to its DateTime equivalent by using the conventions of the current thread culture.

Parse(String, IFormatProvider) Parse(String, IFormatProvider) Parse(String, IFormatProvider) Parse(String, IFormatProvider)

Преобразует строковое представление даты и времени в его эквивалент DateTime, используя сведения о форматировании, связанные с языком и региональными параметрами. Converts the string representation of a date and time to its DateTime equivalent by using culture-specific format information.

Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles)
Parse(String, IFormatProvider, DateTimeStyles) Parse(String, IFormatProvider, DateTimeStyles) Parse(String, IFormatProvider, DateTimeStyles) Parse(String, IFormatProvider, DateTimeStyles)

Преобразует строковое представление даты и времени в его эквивалент DateTime, используя сведения о форматировании, связанные с языком и региональными параметрами, а также стиль форматирования. Converts the string representation of a date and time to its DateTime equivalent by using culture-specific format information and a formatting style.

ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider)

Преобразует заданное строковое представление даты и времени в его эквивалент DateTime, используя указанные сведения о форматировании, связанные с языком и региональными параметрами. Converts the specified string representation of a date and time to its DateTime equivalent using the specified format and culture-specific format information. Формат строкового представления должен полностью соответствовать заданному формату. The format of the string representation must match the specified format exactly.

ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles)
ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles)
ParseExact(String, String, IFormatProvider, DateTimeStyles) ParseExact(String, String, IFormatProvider, DateTimeStyles) ParseExact(String, String, IFormatProvider, DateTimeStyles) ParseExact(String, String, IFormatProvider, DateTimeStyles)

Преобразует заданное строковое представление даты и времени в его эквивалент DateTime, используя заданный формат, указанные сведения о форматировании, связанные с языком и региональными параметрами, а также стиль. Converts the specified string representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. Формат строкового представления должен полностью соответствовать заданному формату. В противном случае возникает исключение. The format of the string representation must match the specified format exactly or an exception is thrown.

ParseExact(String, String[], IFormatProvider, DateTimeStyles) ParseExact(String, String[], IFormatProvider, DateTimeStyles) ParseExact(String, String[], IFormatProvider, DateTimeStyles) ParseExact(String, String[], IFormatProvider, DateTimeStyles)

Преобразует заданное строковое представление даты и времени в его эквивалент DateTime, используя заданный массив форматов, указанные сведения о форматировании, связанные с языком и региональными параметрами, и стиль форматирования. Converts the specified string representation of a date and time to its DateTime equivalent using the specified array of formats, culture-specific format information, and style. Формат строкового представления должен полностью соответствовать по крайней мере одному из заданных форматов. В противном случае возникает исключение. The format of the string representation must match at least one of the specified formats exactly or an exception is thrown.

SpecifyKind(DateTime, DateTimeKind) SpecifyKind(DateTime, DateTimeKind) SpecifyKind(DateTime, DateTimeKind) SpecifyKind(DateTime, DateTimeKind)

Создает объект DateTime, имеющий то же количество тактов, что и заданный объект DateTime, но предназначенный для использования с местным временем, со стандартом UTC, либо ни с тем, ни с другим, как определено значением DateTimeKind. Creates a new DateTime object that has the same number of ticks as the specified DateTime, but is designated as either local time, Coordinated Universal Time (UTC), or neither, as indicated by the specified DateTimeKind value.

Subtract(DateTime) Subtract(DateTime) Subtract(DateTime) Subtract(DateTime)

Вычитает из этого экземпляра указанную дату и время. Subtracts the specified date and time from this instance.

Subtract(TimeSpan) Subtract(TimeSpan) Subtract(TimeSpan) Subtract(TimeSpan)

Вычитает из этого экземпляра указанную длительность. Subtracts the specified duration from this instance.

ToBinary() ToBinary() ToBinary() ToBinary()

Сериализует текущий объект DateTime в 64-разрядное двоичное значение, которое может использоваться в дальнейшем для воссоздания объекта DateTime. Serializes the current DateTime object to a 64-bit binary value that subsequently can be used to recreate the DateTime object.

ToFileTime() ToFileTime() ToFileTime() ToFileTime()

Преобразует значение текущего объекта DateTime во временную характеристику файла Windows. Converts the value of the current DateTime object to a Windows file time.

ToFileTimeUtc() ToFileTimeUtc() ToFileTimeUtc() ToFileTimeUtc()

Преобразует значение текущего объекта DateTime во временную характеристику файла Windows. Converts the value of the current DateTime object to a Windows file time.

ToLocalTime() ToLocalTime() ToLocalTime() ToLocalTime()

Преобразует значение текущего объекта DateTime в местное время. Converts the value of the current DateTime object to local time.

ToLongDateString() ToLongDateString() ToLongDateString() ToLongDateString()

Преобразует значение текущего объекта DateTime в эквивалентное ему длинное строковое представление даты. Converts the value of the current DateTime object to its equivalent long date string representation.

ToLongTimeString() ToLongTimeString() ToLongTimeString() ToLongTimeString()

Преобразует значение текущего объекта DateTime в эквивалентное ему длинное строковое представление времени. Converts the value of the current DateTime object to its equivalent long time string representation.

ToOADate() ToOADate() ToOADate() ToOADate()

Преобразует числовое значение этого экземпляра в эквивалентное ему значение даты OLE-автоматизации. Converts the value of this instance to the equivalent OLE Automation date.

ToShortDateString() ToShortDateString() ToShortDateString() ToShortDateString()

Преобразует значение текущего объекта DateTime в эквивалентное ему короткое строковое представление даты. Converts the value of the current DateTime object to its equivalent short date string representation.

ToShortTimeString() ToShortTimeString() ToShortTimeString() ToShortTimeString()

Преобразует значение текущего объекта DateTime в эквивалентное ему короткое строковое представление времени. Converts the value of the current DateTime object to its equivalent short time string representation.

ToString(String, IFormatProvider) ToString(String, IFormatProvider) ToString(String, IFormatProvider) ToString(String, IFormatProvider)

Преобразует значение текущего объекта DateTime в эквивалентное ему строковое представление с использованием указанного формата и сведений об особенностях формата для данного языка и региональных параметров. Converts the value of the current DateTime object to its equivalent string representation using the specified format and culture-specific format information.

ToString(String) ToString(String) ToString(String) ToString(String)

Преобразует значение текущего объекта DateTime в эквивалентное строковое представление с использованием указанного формата и соглашений о форматировании, принятых для текущего языка и региональных параметров. Converts the value of the current DateTime object to its equivalent string representation using the specified format and the formatting conventions of the current culture.

ToString(IFormatProvider) ToString(IFormatProvider) ToString(IFormatProvider) ToString(IFormatProvider)

Преобразует значение текущего объекта DateTime в эквивалентное ему строковое представление с использованием указанных сведений о форматировании, связанных с языком и региональными параметрами. Converts the value of the current DateTime object to its equivalent string representation using the specified culture-specific format information.

ToString() ToString() ToString() ToString()

Преобразует значение текущего объекта DateTime в эквивалентное строковое представление с помощью соглашений о форматировании для текущего языка и региональных параметров. Converts the value of the current DateTime object to its equivalent string representation using the formatting conventions of the current culture.

ToUniversalTime() ToUniversalTime() ToUniversalTime() ToUniversalTime()

Преобразует значение текущего объекта DateTime во время UTC. Converts the value of the current DateTime object to Coordinated Universal Time (UTC).

TryFormat(Span<Char>, Int32, ReadOnlySpan<Char>, IFormatProvider) TryFormat(Span<Char>, Int32, ReadOnlySpan<Char>, IFormatProvider) TryFormat(Span<Char>, Int32, ReadOnlySpan<Char>, IFormatProvider) TryFormat(Span<Char>, Int32, ReadOnlySpan<Char>, IFormatProvider)
TryParse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime) TryParse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime) TryParse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime) TryParse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime)
TryParse(String, DateTime) TryParse(String, DateTime) TryParse(String, DateTime) TryParse(String, DateTime)

Преобразовывает указанное строковое представление даты и времени в его эквивалент DateTime и возвращает значение, позволяющее определить успешность преобразования. Converts the specified string representation of a date and time to its DateTime equivalent and returns a value that indicates whether the conversion succeeded.

TryParse(String, IFormatProvider, DateTimeStyles, DateTime) TryParse(String, IFormatProvider, DateTimeStyles, DateTime) TryParse(String, IFormatProvider, DateTimeStyles, DateTime) TryParse(String, IFormatProvider, DateTimeStyles, DateTime)

Преобразует заданное строковое представление даты и времени в его эквивалент DateTime, используя указанную информацию о форматировании, связанную с языком и региональными параметрами, и возвращает значение, которое показывает успешность преобразования. Converts the specified string representation of a date and time to its DateTime equivalent using the specified culture-specific format information and formatting style, and returns a value that indicates whether the conversion succeeded.

TryParse(ReadOnlySpan<Char>, DateTime) TryParse(ReadOnlySpan<Char>, DateTime) TryParse(ReadOnlySpan<Char>, DateTime) TryParse(ReadOnlySpan<Char>, DateTime)
TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime) TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime) TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime) TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime)
TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTime) TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTime) TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTime) TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTime)
TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)

Преобразует заданное строковое представление даты и времени в его эквивалент DateTime, используя заданный формат, указанные сведения о форматировании, связанные с языком и региональными параметрами, а также стиль. Converts the specified string representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. Формат строкового представления должен полностью соответствовать заданному формату. The format of the string representation must match the specified format exactly. Метод возвращает значение, указывающее, успешно ли выполнено преобразование. The method returns a value that indicates whether the conversion succeeded.

TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)

Преобразует заданное строковое представление даты и времени в его эквивалент DateTime, используя заданный массив форматов, указанные сведения о форматировании, связанные с языком и региональными параметрами, и стиль форматирования. Converts the specified string representation of a date and time to its DateTime equivalent using the specified array of formats, culture-specific format information, and style. Формат представления строки должен полностью соответствовать хотя бы одному заданному формату. The format of the string representation must match at least one of the specified formats exactly. Метод возвращает значение, указывающее, успешно ли выполнено преобразование. The method returns a value that indicates whether the conversion succeeded.

Операторы

Addition(DateTime, TimeSpan) Addition(DateTime, TimeSpan) Addition(DateTime, TimeSpan) Addition(DateTime, TimeSpan)

Прибавляет указанный временной интервал к заданной дате и времени, возвращая новую дату и время. Adds a specified time interval to a specified date and time, yielding a new date and time.

Equality(DateTime, DateTime) Equality(DateTime, DateTime) Equality(DateTime, DateTime) Equality(DateTime, DateTime)

Определяет, равны ли два заданных экземпляра класса DateTime. Determines whether two specified instances of DateTime are equal.

GreaterThan(DateTime, DateTime) GreaterThan(DateTime, DateTime) GreaterThan(DateTime, DateTime) GreaterThan(DateTime, DateTime)

Определяет, является ли значение одного заданного объекта DateTime более поздним относительно другого заданного объекта DateTime. Determines whether one specified DateTime is later than another specified DateTime.

GreaterThanOrEqual(DateTime, DateTime) GreaterThanOrEqual(DateTime, DateTime) GreaterThanOrEqual(DateTime, DateTime) GreaterThanOrEqual(DateTime, DateTime)

Определяет, представляет ли заданный объект DateTime дату и время, которые совпадают со значением другого заданного объекта DateTime или являются более поздними относительно него. Determines whether one specified DateTime represents a date and time that is the same as or later than another specified DateTime.

Inequality(DateTime, DateTime) Inequality(DateTime, DateTime) Inequality(DateTime, DateTime) Inequality(DateTime, DateTime)

Определяет, являются ли два заданных экземпляра класса DateTime неравными. Determines whether two specified instances of DateTime are not equal.

LessThan(DateTime, DateTime) LessThan(DateTime, DateTime) LessThan(DateTime, DateTime) LessThan(DateTime, DateTime)

Определяет, является ли значение одного заданного объекта DateTime более ранним относительно другого заданного объекта DateTime. Determines whether one specified DateTime is earlier than another specified DateTime.

LessThanOrEqual(DateTime, DateTime) LessThanOrEqual(DateTime, DateTime) LessThanOrEqual(DateTime, DateTime) LessThanOrEqual(DateTime, DateTime)

Определяет, представляет ли заданный объект DateTime дату и время, которые совпадают со значением другого заданного объекта DateTime или являются более ранними относительно него. Determines whether one specified DateTime represents a date and time that is the same as or earlier than another specified DateTime.

Subtraction(DateTime, TimeSpan) Subtraction(DateTime, TimeSpan) Subtraction(DateTime, TimeSpan) Subtraction(DateTime, TimeSpan)

Вычитает заданный временной интервал из указанной даты и времени и возвращает новую дату и время. Subtracts a specified time interval from a specified date and time and returns a new date and time.

Subtraction(DateTime, DateTime) Subtraction(DateTime, DateTime) Subtraction(DateTime, DateTime) Subtraction(DateTime, DateTime)

Вычитает указанную дату и время из другой указанной даты и времени и возвращает временной интервал. Subtracts a specified date and time from another specified date and time and returns a time interval.

Явные реализации интерфейса

IComparable.CompareTo(Object) IComparable.CompareTo(Object) IComparable.CompareTo(Object) IComparable.CompareTo(Object)
IConvertible.GetTypeCode() IConvertible.GetTypeCode() IConvertible.GetTypeCode() IConvertible.GetTypeCode()
IConvertible.ToBoolean(IFormatProvider) IConvertible.ToBoolean(IFormatProvider) IConvertible.ToBoolean(IFormatProvider) IConvertible.ToBoolean(IFormatProvider)

Данное преобразование не поддерживается. This conversion is not supported. При попытке использовать этот метод выбрасывается исключение InvalidCastException. Attempting to use this method throws an InvalidCastException.

IConvertible.ToByte(IFormatProvider) IConvertible.ToByte(IFormatProvider) IConvertible.ToByte(IFormatProvider) IConvertible.ToByte(IFormatProvider)

Данное преобразование не поддерживается. This conversion is not supported. При попытке использовать этот метод выбрасывается исключение InvalidCastException. Attempting to use this method throws an InvalidCastException.

IConvertible.ToChar(IFormatProvider) IConvertible.ToChar(IFormatProvider) IConvertible.ToChar(IFormatProvider) IConvertible.ToChar(IFormatProvider)

Данное преобразование не поддерживается. This conversion is not supported. При попытке использовать этот метод выбрасывается исключение InvalidCastException. Attempting to use this method throws an InvalidCastException.

IConvertible.ToDateTime(IFormatProvider) IConvertible.ToDateTime(IFormatProvider) IConvertible.ToDateTime(IFormatProvider) IConvertible.ToDateTime(IFormatProvider)

Возвращает текущий объект DateTime. Returns the current DateTime object.

IConvertible.ToDecimal(IFormatProvider) IConvertible.ToDecimal(IFormatProvider) IConvertible.ToDecimal(IFormatProvider) IConvertible.ToDecimal(IFormatProvider)

Данное преобразование не поддерживается. This conversion is not supported. При попытке использовать этот метод выбрасывается исключение InvalidCastException. Attempting to use this method throws an InvalidCastException.

IConvertible.ToDouble(IFormatProvider) IConvertible.ToDouble(IFormatProvider) IConvertible.ToDouble(IFormatProvider) IConvertible.ToDouble(IFormatProvider)

Данное преобразование не поддерживается. This conversion is not supported. При попытке использовать этот метод выбрасывается исключение InvalidCastException. Attempting to use this method throws an InvalidCastException.

IConvertible.ToInt16(IFormatProvider) IConvertible.ToInt16(IFormatProvider) IConvertible.ToInt16(IFormatProvider) IConvertible.ToInt16(IFormatProvider)

Данное преобразование не поддерживается. This conversion is not supported. При попытке использовать этот метод выбрасывается исключение InvalidCastException. Attempting to use this method throws an InvalidCastException.

IConvertible.ToInt32(IFormatProvider) IConvertible.ToInt32(IFormatProvider) IConvertible.ToInt32(IFormatProvider) IConvertible.ToInt32(IFormatProvider)

Данное преобразование не поддерживается. This conversion is not supported. При попытке использовать этот метод выбрасывается исключение InvalidCastException. Attempting to use this method throws an InvalidCastException.

IConvertible.ToInt64(IFormatProvider) IConvertible.ToInt64(IFormatProvider) IConvertible.ToInt64(IFormatProvider) IConvertible.ToInt64(IFormatProvider)

Данное преобразование не поддерживается. This conversion is not supported. При попытке использовать этот метод выбрасывается исключение InvalidCastException. Attempting to use this method throws an InvalidCastException.

IConvertible.ToSByte(IFormatProvider) IConvertible.ToSByte(IFormatProvider) IConvertible.ToSByte(IFormatProvider) IConvertible.ToSByte(IFormatProvider)

Данное преобразование не поддерживается. This conversion is not supported. При попытке использовать этот метод выбрасывается исключение InvalidCastException. Attempting to use this method throws an InvalidCastException.

IConvertible.ToSingle(IFormatProvider) IConvertible.ToSingle(IFormatProvider) IConvertible.ToSingle(IFormatProvider) IConvertible.ToSingle(IFormatProvider)

Данное преобразование не поддерживается. This conversion is not supported. При попытке использовать этот метод выбрасывается исключение InvalidCastException. Attempting to use this method throws an InvalidCastException.

IConvertible.ToType(Type, IFormatProvider) IConvertible.ToType(Type, IFormatProvider) IConvertible.ToType(Type, IFormatProvider) IConvertible.ToType(Type, IFormatProvider)

Преобразует текущий объект DateTime в объект заданного типа. Converts the current DateTime object to an object of a specified type.

IConvertible.ToUInt16(IFormatProvider) IConvertible.ToUInt16(IFormatProvider) IConvertible.ToUInt16(IFormatProvider) IConvertible.ToUInt16(IFormatProvider)

Данное преобразование не поддерживается. This conversion is not supported. При попытке использовать этот метод выбрасывается исключение InvalidCastException. Attempting to use this method throws an InvalidCastException.

IConvertible.ToUInt32(IFormatProvider) IConvertible.ToUInt32(IFormatProvider) IConvertible.ToUInt32(IFormatProvider) IConvertible.ToUInt32(IFormatProvider)

Данное преобразование не поддерживается. This conversion is not supported. При попытке использовать этот метод выбрасывается исключение InvalidCastException. Attempting to use this method throws an InvalidCastException.

IConvertible.ToUInt64(IFormatProvider) IConvertible.ToUInt64(IFormatProvider) IConvertible.ToUInt64(IFormatProvider) IConvertible.ToUInt64(IFormatProvider)

Данное преобразование не поддерживается. This conversion is not supported. При попытке использовать этот метод выбрасывается исключение InvalidCastException. Attempting to use this method throws an InvalidCastException.

ISerializable.GetObjectData(SerializationInfo, StreamingContext) ISerializable.GetObjectData(SerializationInfo, StreamingContext) ISerializable.GetObjectData(SerializationInfo, StreamingContext) ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Заполняет объект SerializationInfo данными, необходимыми для сериализации текущего объекта DateTime. Populates a SerializationInfo object with the data needed to serialize the current DateTime object.

Применяется к

Потокобезопасность

Все члены этого типа являются потокобезопасными. All members of this type are thread safe. Члены, которые могут изменить состояние экземпляра, в действительности возвращают новый экземпляр инициализируется с новым значением. Members that appear to modify instance state actually return a new instance initialized with the new value. Как с любым другим типом, чтение и запись к общей переменной, которая содержит экземпляр этого типа должны быть защищены функцией блокировки для обеспечения потокобезопасности. As with any other type, reading and writing to a shared variable that contains an instance of this type must be protected by a lock to guarantee thread safety.

См. также