DateTime.Parse DateTime.Parse DateTime.Parse DateTime.Parse Method

Определение

Преобразует строковое представление даты и времени в его эквивалент DateTime.Converts the string representation of a date and time to its DateTime equivalent.

Перегрузки

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)

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

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.

Примеры

Многочисленные примеры, вызывающие метод DateTime.Parse, разбросаны в разделе « Примечания » этой статьи и в документации по отдельным перегрузкам DateTime.Parse.Numerous examples that call the DateTime.Parse method are interspersed throughout the Remarks section of this article and in the documentation for the individual DateTime.Parse overloads.

Примечание

Некоторые примеры C# в этой статье выполняются во встроенном средстве выполнения кода и на площадке Try.NET.Some 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.Parse примеров, которые включены в проект .NET Core 2,0 для C# и проект .NET Core 2,0 для Visual Basic, из репозитория DotNet/Samples GitHub.You can also download a complete set of DateTime.Parse examples, which are included in a .NET Core 2.0 project for C# and a .NET Core 2.0 project for Visual Basic, from the dotnet/samples GitHub repository.

Комментарии

СодержаниеIn this section:

Какой метод следует вызывать?Which method do I call?

КомуTo CallCall
Проанализируйте строку даты и времени, используя соглашения текущего языка и региональных параметров.Parse a date and time string by using the conventions of the current culture. Перегрузка Parse(String)Parse(String) overload
Анализ строки даты и времени с помощью соглашений определенного языка и региональных параметров.Parse a date and time string by using the conventions of a specific culture. перегрузка Parse(String, IFormatProvider) (см. раздел синтаксический анализ и культурные соглашения)Parse(String, IFormatProvider) overload (see Parsing and Cultural Conventions)
Синтаксический анализ строки даты и времени с помощью специальных элементов стиля (например, пробелов или пустых пробелов).Parse a date and time string with special style elements (such as white space or no white space). Перегрузка Parse(String, IFormatProvider, DateTimeStyles)Parse(String, IFormatProvider, DateTimeStyles) overload
Синтаксический анализ строки даты и времени, которая должна иметь определенный формат.Parse a date and time string that must be in a particular format. DateTime.ParseExact или DateTime.TryParseExactDateTime.ParseExact or DateTime.TryParseExact
Проанализируйте строку даты и времени и выполните преобразование в UTC или местное время.Parse a date and time string and perform a conversion to UTC or local time. Перегрузка Parse(String, IFormatProvider, DateTimeStyles)Parse(String, IFormatProvider, DateTimeStyles) overload
Синтаксический анализ строки даты и времени без обработки исключений.Parse a date and time string without handling exceptions. Метод DateTime.TryParseDateTime.TryParse method
Restore (циклический обмен) — значение даты и времени, созданное операцией форматирования.Restore (round-trip) a date and time value created by a formatting operation. Передайте строку стандартного формата "o" или "r" в метод ToString(String) и вызовите перегрузку Parse(String, IFormatProvider, DateTimeStyles) с DateTimeStyles.RoundtripKindPass the "o" or "r" standard format string to the ToString(String) method, and call the Parse(String, IFormatProvider, DateTimeStyles) overload with DateTimeStyles.RoundtripKind
Синтаксический анализ строки даты и времени в фиксированном формате на компьютерах (и, возможно, в культуре).Parse a date and time string in a fixed format across machine (and possibly cultural) boundaries. метод DateTime.ParseExact или DateTime.TryParseExactDateTime.ParseExact or DateTime.TryParseExact method

Анализируемая строкаThe string to parse

Метод Parse пытается преобразовать строковое представление значения даты и времени в эквивалентный DateTime.The Parse method tries to convert the string representation of a date and time value to its DateTime equivalent. Он пытается полностью проанализировать входную строку без вызова исключения FormatException.It tries to parse the input string completely without throwing a FormatException exception.

Важно!

Если операция синтаксического анализа завершается неудачей из-за нераспознанного формата строки, метод Parse создает FormatException, тогда как метод TryParse Возвращает false.If the parsing operation fails because of an unrecognized string format, the Parse method throws a FormatException, whereas the TryParse method returns false. Так как обработка исключений может быть дорогостоящей, следует использовать Parse, если операция синтаксического анализа ожидается, так как источник входных данных является доверенным.Because exception handling can be expensive, you should use Parse when the parsing operation is expected to succeed because the input source is trusted. TryParse является предпочтительным при сбоях анализа, особенно из-за того, что источник входных данных не является доверенным, или вы имеете разумные значения по умолчанию для замены строк, которые не анализируются успешно.TryParse is preferable when parsing failures are likely, particularly because an input source is not trusted, or you have reasonable default values to substitute for strings that do not parse successfully.

Анализируемая строка может принимать любое из следующих форм:The string to be parsed can take any of the following forms:

  • Строка с компонентом даты и времени.A string with a date and a time component.

  • Строка с датой, но без компонента времени.A string with a date but no time component. Если компонент времени отсутствует, метод принимает значение 12:00 в полночь.If the time component is absent, the method assumes 12:00 midnight. Если компонент даты имеет год из двух цифр, он преобразуется в год на основе Calendar.TwoDigitYearMax текущего календаря текущего языка и региональных параметров или текущего календаря указанного языка и региональных параметров (если используется перегрузка с аргументом provider, отличным от NULL).If the date component has a two-digit year, it is converted to a year based on the Calendar.TwoDigitYearMax of the current culture's current calendar or the specified culture's current calendar (if you use an overload with a non-null provider argument).

  • Строка с компонентом даты, включающая только месяц и год, но не компонент дня.A string with a date component that includes only the month and the year but no day component. Метод предполагает, что первый день месяца.The method assumes the first day of the month.

  • Строка с компонентом даты, включающая только месяц и день, но не компонент year.A string with a date component that includes only the month and the day but no year component. Метод предполагает текущий год.The method assumes the current year.

  • Строка со временем, но без компонента даты.A string with a time but no date component. Метод принимает текущую дату, если только вы не вызываете перегрузку Parse(String, IFormatProvider, DateTimeStyles) и не включаете DateTimeStyles.NoCurrentDateDefault в аргументе styles. в этом случае метод принимает дату 1 января 0001 года.The method assumes the current date unless you call the Parse(String, IFormatProvider, DateTimeStyles) overload and include DateTimeStyles.NoCurrentDateDefault in the styles argument, in which case the method assumes a date of January 1, 0001.

  • Строка с компонентом времени, включающий только час и обозначение AM/PM без компонента даты.A string with a time component that includes only the hour and an AM/PM designator, with no date component. Метод предполагает, что текущая дата и время не являются минутами и не имеют секунд.The method assumes the current date and a time with no minutes and no seconds. Это поведение можно изменить, вызвав перегрузку Parse(String, IFormatProvider, DateTimeStyles) и добавив DateTimeStyles.NoCurrentDateDefault в аргументе styles. в этом случае метод принимает дату 1 января 0001 года.You can change this behavior by calling the Parse(String, IFormatProvider, DateTimeStyles) overload and include DateTimeStyles.NoCurrentDateDefault in the styles argument, in which case the method assumes a date of January 1, 0001.

  • Строка, которая включает сведения о часовом поясе и соответствует стандарту ISO 8601.A string that includes time zone information and conforms to ISO 8601. В следующих примерах первая строка обозначает время в формате UTC, а второе — время в часовом поясе в семь часов раньше времени UTC:In the following examples, the first string designates Coordinated Universal Time (UTC), and the second designates the time in a time zone that's seven hours earlier than UTC:

    "2008-11-01T19:35:00.0000000 Z""2008-11-01T19:35:00.0000000Z"
    "2008-11-01T19:35:00.0000000-07:00""2008-11-01T19:35:00.0000000-07:00"

  • Строка, включающая обозначение GMT и соответствующее формату времени RFC 1123; Например:A string that includes the GMT designator and conforms to the RFC 1123 time format; for example:

    "Кот, 01 ноября 2008 19:35:00 GMT""Sat, 01 Nov 2008 19:35:00 GMT"

  • Строка, содержащая дату и время вместе со сведениями о смещении часового пояса; Например:A string that includes the date and time along with time zone offset information; for example:

    "03/01/2009 05:42:00 -5:00""03/01/2009 05:42:00 -5:00"

В следующем примере выполняется синтаксический анализ строк в каждом из этих форматов с использованием соглашений о форматировании текущего языка и региональных параметров, которые в данном случае являются региональными параметрами en-US:The following example parses strings in each of these formats by using the formatting conventions of the current culture, which in this case is the en-US culture:

using System;

public class Example
{
   public static void Main()
   {
      (string dateAsString, string description)[]  dateInfo = { ("08/18/2018 07:22:16", "String with a date and time component"),                             
                                                                ("08/18/2018", "String with a date component only"),
                                                                ("8/2018", "String with a month and year component only"),
                                                                ("8/18", "String with a month and day component only"),
                                                                ("07:22:16", "String with a time component only"),
                                                                ("7 PM", "String with an hour and AM/PM designator only"),
                                                                ("2018-08-18T07:22:16.0000000Z", "UTC string that conforms to ISO 8601"),   
                                                                ("2018-08-18T07:22:16.0000000-07:00", "Non-UTC string that conforms to ISO 8601"),
                                                                ("Sat, 18 Aug 2018 07:22:16 GMT", "String that conforms to RFC 1123"),
                                                                ("08/18/2018 07:22:16 -5:00", "String with date, time, and time zone information" ) };
   
      Console.WriteLine($"Today is {DateTime.Now:d}\n");
      
      foreach (var item in dateInfo) {
         Console.WriteLine($"{item.description + ":",-52} '{item.dateAsString}' --> {DateTime.Parse(item.dateAsString)}");        
      }
   }
}
// The example displays output like the following:
//   Today is 2/22/2018
//   
//   String with a date and time component:               '08/18/2018 07:22:16' --> 8/18/2018 7:22:16 AM
//   String with a date component only:                   '08/18/2018' --> 8/18/2018 12:00:00 AM
//   String with a month and year component only:         '8/2018' --> 8/1/2018 12:00:00 AM
//   String with a month and day component only:          '8/18' --> 8/18/2018 12:00:00 AM
//   String with a time component only:                   '07:22:16' --> 2/22/2018 7:22:16 AM
//   String with an hour and AM/PM designator only:       '7 PM' --> 2/22/2018 7:00:00 PM
//   UTC string that conforms to ISO 8601:                '2018-08-18T07:22:16.0000000Z' --> 8/18/2018 12:22:16 AM
//   Non-UTC string that conforms to ISO 8601:            '2018-08-18T07:22:16.0000000-07:00' --> 8/18/2018 7:22:16 AM
//   String that conforms to RFC 1123:                    'Sat, 18 Aug 2018 07:22:16 GMT' --> 8/18/2018 12:22:16 AM
//   String with date, time, and time zone information:   '08/18/2018 07:22:16 -5:00' --> 8/18/2018 5:22:16 AM


Public Module Strings
   Public Sub Main()
      Dim dateInfo() As (dateAsString As String, description As String) = 
                     { ("08/18/2018 07:22:16", "String with a date and time component"),
                       ("08/18/2018", "String with a date component only"),
                       ("8/2018", "String with a month and year component only"),
                       ("8/18", "String with a month and day component only"),
                       ("07:22:16", "String with a time component only"),
                       ("7 PM", "String with an hour and AM/PM designator only"),
                       ("2018-08-18T07:22:16.0000000Z", "UTC string that conforms to ISO 8601"),   
                       ("2018-08-18T07:22:16.0000000-07:00", "Non-UTC string that conforms to ISO 8601"),
                       ("Sat, 18 Aug 2018 07:22:16 GMT", "String that conforms to RFC 1123"),
                       ("08/18/2018 07:22:16 -5:00", "String with date, time, and time zone information" ) }
   
      Console.WriteLine($"Today is {Date.Now:d}{vbCrLf}")
      
      For Each item in dateInfo
         Console.WriteLine($"{item.description + ":",-52} '{item.dateAsString}' --> {DateTime.Parse(item.dateAsString)}")        
      Next
   End Sub
End Module
' The example displays output like the following:
'   Today is 2/22/2018
'   
'   String with a date and time component:               '08/18/2018 07:22:16' --> 8/18/2018 7:22:16 AM
'   String with a date component only:                   '08/18/2018' --> 8/18/2018 12:00:00 AM
'   String with a month and year component only:         '8/2018' --> 8/1/2018 12:00:00 AM
'   String with a month and day component only:          '8/18' --> 8/18/2018 12:00:00 AM
'   String with a time component only:                   '07:22:16' --> 2/22/2018 7:22:16 AM
'   String with an hour and AM/PM designator only:       '7 PM' --> 2/22/2018 7:00:00 PM
'   UTC string that conforms to ISO 8601:                '2018-08-18T07:22:16.0000000Z' --> 8/18/2018 12:22:16 AM
'   Non-UTC string that conforms to ISO 8601:            '2018-08-18T07:22:16.0000000-07:00' --> 8/18/2018 7:22:16 AM
'   String that conforms to RFC 1123:                    'Sat, 18 Aug 2018 07:22:16 GMT' --> 8/18/2018 12:22:16 AM
'   String with date, time, and time zone information:   '08/18/2018 07:22:16 -5:00' --> 8/18/2018 5:22:16 AM

Если входная строка представляет високосный день в високосном году в календаре, используемом методом анализа (см. раздел синтаксический анализ и культурные соглашения), то метод Parse анализирует строку успешно.If the input string represents a leap day in a leap year in the calendar used by the parsing method (see Parsing and cultural conventions), the Parse method parses the string successfully. Если входная строка представляет високосный день в невисокосном году, метод создает исключение FormatException.If the input string represents a leap day in a non-leap year, the method throws a FormatException.

Поскольку метод Parse пытается проанализировать строковое представление даты и времени с помощью правил форматирования текущего или указанного языка и региональных параметров, попытка выполнить синтаксический анализ строки в разных культурах может завершиться неудачно.Because the Parse method tries to parse the string representation of a date and time by using the formatting rules of the current or a specified culture, trying to parse a string across different cultures can fail. Чтобы выполнить синтаксический анализ определенного формата даты и времени в разных языковых стандартах, используйте одну из перегрузок метода DateTime.ParseExact и укажите описатель формата.To parse a specific date and time format across different locales, use one of the overloads of the DateTime.ParseExact method and provide a format specifier.

Синтаксический анализ и культурные соглашенияParsing and cultural conventions

Все перегрузки метода Parse чувствительны к языку и региональным параметрам, если только строка для анализа (которая представлена s в следующей таблице) соответствует шаблону ISO 8601.All overloads of the Parse method are culture-sensitive unless the string to be parsed (which is represented by s in the following table) conforms to the ISO 8601 pattern. Операция синтаксического анализа использует сведения о форматировании в объекте DateTimeFormatInfo, который является производным следующим образом:The parsing operation uses the formatting information in a DateTimeFormatInfo object that is derived as follows:

Важно!

Эры в японских календарях основаны на периодах царствования императоров. Таким образом, ожидается наступление новой эры.Eras in the Japanese calendars are based on the emperor's reign and are therefore expected to change. Например, 1 мая 2019 года в JapaneseCalendar и JapaneseLunisolarCalendar отмечено как начало эры Рэйва.For example, May 1, 2019 marked the beginning of the Reiwa era in the JapaneseCalendar and JapaneseLunisolarCalendar. Изменение эры затрагивает все приложения, использующие эти календари.Such a change of era affects all applications that use these calendars. Из раздела Обработка новой эры по японскому календарю в .NET можно почерпнуть дополнительные сведения, а также узнать, затронуты ли ваши приложения этим изменением.See Handling a new era in the Japanese calendar in .NET for more information and to determine whether your applications are affected. Сведения о тестировании приложений в системах Windows для обеспечения их готовности к работе в новой эре см. в разделе Подготовка приложения к изменению эры по японскому календарю.See Prepare your application for the Japanese era change for information on testing your applications on Windows systems to ensure their readiness for the era change. Сведения о функциях в .NET, которые поддерживают календарь с несколькими эрами, и рекомендации по использованию таких календарей см. в разделе о работе с эрами.See Working with eras for features in .NET that support calendars with multiple eras and for best practices when working with calendars that support multiple eras.

Если вызванIf you call И providerAnd provider is Сведения о форматировании являются производными отFormatting information is derived from
Parse(String) - Язык и региональные параметры текущего потока (свойство DateTimeFormatInfo.CurrentInfo)The current thread culture (DateTimeFormatInfo.CurrentInfo property)
Parse(String, IFormatProvider) или Parse(String, IFormatProvider, DateTimeStyles)Parse(String, IFormatProvider) or Parse(String, IFormatProvider, DateTimeStyles) Объект DateTimeFormatInfoa DateTimeFormatInfo object Указанный объект DateTimeFormatInfoThe specified DateTimeFormatInfo object
Parse(String, IFormatProvider) или Parse(String, IFormatProvider, DateTimeStyles)Parse(String, IFormatProvider) or Parse(String, IFormatProvider, DateTimeStyles) null Язык и региональные параметры текущего потока (свойство DateTimeFormatInfo.CurrentInfo)The current thread culture (DateTimeFormatInfo.CurrentInfo property)
Parse(String, IFormatProvider) или Parse(String, IFormatProvider, DateTimeStyles)Parse(String, IFormatProvider) or Parse(String, IFormatProvider, DateTimeStyles) Объект CultureInfoa CultureInfo object Свойство CultureInfo.DateTimeFormat.The CultureInfo.DateTimeFormat property
Parse(String, IFormatProvider) или Parse(String, IFormatProvider, DateTimeStyles)Parse(String, IFormatProvider) or Parse(String, IFormatProvider, DateTimeStyles) Пользовательская реализация IFormatProviderCustom IFormatProvider implementation метод IFormatProvider.GetFormat ;The IFormatProvider.GetFormat method

Если сведения о форматировании являются производными от объекта DateTimeFormatInfo, свойство DateTimeFormatInfo.Calendar определяет календарь, используемый в операции синтаксического анализа.When formatting information is derived from a DateTimeFormatInfo object, the DateTimeFormatInfo.Calendar property defines the calendar used in the parsing operation.

При синтаксическом анализе строки даты и времени с помощью объекта DateTimeFormatInfo с настроенными параметрами, отличающимися от стандартных параметров, используйте метод ParseExact вместо метода Parse, чтобы повысить вероятность успешного преобразования.If you parse a date and time string by using a DateTimeFormatInfo object with customized settings that are different from those of a standard culture, use the ParseExact method instead of the Parse method to improve the chances for a successful conversion. Нестандартная строка даты и времени может быть сложной и сложной для анализа.A non-standard date and time string can be complicated and difficult to parse. Метод Parse пытается выполнить синтаксический анализ строки с несколькими неявными шаблонами анализа, все из которых может завершиться ошибкой.The Parse method tries to parse a string with several implicit parse patterns, all of which might fail. Напротив, метод ParseExact требует явного назначения одного или более точных шаблонов анализа, которые, вероятнее всего, будут успешны.In contrast, the ParseExact method requires you to explicitly designate one or more exact parse patterns that are likely to succeed. Дополнительные сведения см. в разделе "DateTimeFormatInfo and платформа динамических данных" статьи DateTimeFormatInfo.For more information, see the "DateTimeFormatInfo and Dynamic Data" section in the DateTimeFormatInfo topic.

Важно!

Обратите внимание, что соглашения о форматировании для определенного языка и региональных параметров являются динамическими и могут быть изменены.Note that the formatting conventions for a particular culture are dynamic and can be subject to change. Это означает, что операции синтаксического анализа, зависящие от соглашений о форматировании по умолчанию (текущего) языка и региональных параметров или задающих объект IFormatProvider, представляющий язык и региональные параметры, отличные от инвариантного языка и региональных параметров, могут вызвать непредвиденную ошибку при выполнении любого из следующих условий:This means that parsing operations that depend on the formatting conventions of the default (current) culture or that specify an IFormatProvider object that represents a culture other than the invariant culture can unexpectedly fail if any of the following occurs:

  • Данные, зависящие от языка и региональных параметров, изменились между основными или дополнительными версиями .NET Framework или в результате обновления существующей версии .NET Framework.The culture-specific data has changed between major or minor versions of the .NET Framework or as the result of an update to the existing version of the .NET Framework.
  • Данные, зависящие от языка и региональных параметров, отражают предпочтения пользователя, которые могут отличаться от компьютера к компьютеру или сеансу.The culture-specific data reflects user preferences, which can vary from machine to machine or session to session.
  • Данные, зависящие от языка и региональных параметров, представляют собой заменяющую культуру, переопределяющую параметры стандартного языка и региональных параметров или пользовательского языка и региональных параметров.The culture-specific data represents a replacement culture that overrides the settings of a standard culture or a custom culture.

Чтобы избежать трудностей при анализе строк данных и времени, связанных с изменениями в культурных данных, можно выполнить синтаксический анализ строк даты и времени с помощью инвариантного языка и региональных параметров, или же можно вызвать метод ParseExact или TryParseExact и указать точный формат строки. для анализа.To prevent the difficulties in parsing data and time strings that are associated with changes in cultural data, you can parse date and time strings by using the invariant culture, or you can call the ParseExact or TryParseExact method and specify the exact format of the string to be parsed. При сериализации и десериализации данных даты и времени можно использовать соглашения о форматировании инвариантного языка и региональных параметров, а также сериализовать и десериализовать значение DateTime в двоичном формате.If you are serializing and deserializing date and time data, you can either use the formatting conventions of the invariant culture, or you can serialize and deserialize the DateTime value in a binary format.

Дополнительные сведения см. в разделе "данные динамического языка и региональных параметров" статьи CultureInfo и в разделе "сохранение значений DateTime" статьи DateTime.For more information see the "Dynamic culture data" section in the CultureInfo topic and the "Persisting DateTime values" section in the DateTime topic.

Синтаксический анализ и элементы стиляParsing and style elements

Все перегрузки Parse игнорируют начальные, внутренние или конечные пробелы во входной строке (которая представлена s в следующей таблице).All Parse overloads ignore leading, inner, or trailing white-space characters in the input string (which is represented by s in the following table). Дата и время могут быть заключены в скобки с парой начальных и конечных символов РЕШЕТКи ("#", U + 0023), а также могут заканчиваться одним или несколькими символами NULL (U + 0000).The date and time can be bracketed with a pair of leading and trailing NUMBER SIGN characters ("#", U+0023), and can be trailed with one or more NULL characters (U+0000).

Кроме того, перегрузка Parse(String, IFormatProvider, DateTimeStyles) имеет параметр styles, состоящий из одного или нескольких элементов перечисления DateTimeStyles.In addition, the Parse(String, IFormatProvider, DateTimeStyles) overload has a styles parameter that consists of one or more members of the DateTimeStyles enumeration. Этот параметр определяет, как s должен интерпретироваться и как операция синтаксического анализа должна преобразовать s в дату и время.This parameter defines how s should be interpreted and how the parse operation should convert s to a date and time. В следующей таблице приводится описание влияния каждого элемента DateTimeStyles на операцию синтаксического анализа.The following table describes the effect of each DateTimeStyles member on the parse operation.

DateTimeStyles, элементDateTimeStyles member Воздействие на преобразованиеEffect on conversion
AdjustToUniversal Выполняет синтаксический анализ s и при необходимости преобразует его в формат UTC следующим образом:Parses s and, if necessary, converts it to UTC, as follows:

— Если s включает смещение часового пояса или если s не содержит сведений о часовом поясе, но styles включает флаг AssumeLocal, метод анализирует строку, вызывает ToUniversalTime для преобразования возвращенного значения DateTime в формат UTC и задает для свойства Kind значение DateTimeKind.Utc.- If s includes a time zone offset, or if s contains no time zone information but styles includes the AssumeLocal flag, the method parses the string, calls ToUniversalTime to convert the returned DateTime value to UTC, and sets the Kind property to DateTimeKind.Utc.
— Если s указывает, что он представляет время в формате UTC или если s не содержит сведений о часовом поясе, но styles включает флаг AssumeUniversal, метод анализирует строку, не выполняет преобразование часового пояса для возвращенного значения DateTime и устанавливает Kind значение DateTimeKind.Utc.- If s indicates that it represents UTC, or if s does not contain time zone information but styles includes the AssumeUniversal flag, the method parses the string, performs no time zone conversion on the returned DateTime value, and sets the Kind property to DateTimeKind.Utc.
— Во всех остальных случаях флаг не действует.- In all other cases, the flag has no effect.
AllowInnerWhite Это значение игнорируется.This value is ignored. Внутренние пробелы всегда разрешены в элементах даты и времени s.Inner white space is always permitted in the date and time elements of s.
AllowLeadingWhite Это значение игнорируется.This value is ignored. Начальные пробелы всегда разрешены в элементах даты и времени s.Leading white space is always permitted in the date and time elements of s.
AllowTrailingWhite Это значение игнорируется.This value is ignored. Конечные пробелы всегда разрешены в элементах даты и времени s.Trailing white space is always permitted in the date and time elements of s.
AllowWhiteSpaces Указывает, что s может содержать начальные, внутренние и конечные пробелы.Specifies that s may contain leading, inner, and trailing white spaces. Это поведение установлено по умолчанию.This is the default behavior. Он не может быть переопределен путем предоставления более однозначного значения перечисления DateTimeStyles, такого как None.It cannot be overridden by supplying a more restrictive DateTimeStyles enumeration value such as None.
AssumeLocal Указывает, что если s не содержит никаких сведений о часовом поясе, предполагается местное время.Specifies that if s lacks any time zone information, local time is assumed. Если флаг AdjustToUniversal отсутствует, свойство Kind возвращаемого значения DateTime устанавливается в DateTimeKind.Local.Unless the AdjustToUniversal flag is present, the Kind property of the returned DateTime value is set to DateTimeKind.Local.
AssumeUniversal Указывает, что если s не имеет сведений о часовом поясе, предполагается время в формате UTC.Specifies that if s lacks any time zone information, UTC is assumed. Если флаг AdjustToUniversal отсутствует, метод преобразует возвращенное значение DateTime из UTC в местное время и устанавливает для его свойства Kind значение DateTimeKind.Local.Unless the AdjustToUniversal flag is present, the method converts the returned DateTime value from UTC to local time and sets its Kind property to DateTimeKind.Local.
None Несмотря на допустимость, это значение игнорируется.Although valid, this value is ignored.
RoundtripKind Для строк, содержащих сведения о часовом поясе, пытается предотвратить преобразование строки даты и времени в значение DateTime, представляющее местное время со свойством Kind, равным DateTimeKind.Local.For strings that contain time zone information, tries to prevent the conversion of a date and time string to a DateTime value that represents a local time with its Kind property set to DateTimeKind.Local. Как правило, такая строка создается путем вызова метода DateTime.ToString(String) и с помощью описателя стандартного формата "o", "r" или "u".Typically, such a string is created by calling the DateTime.ToString(String) method and by using the "o", "r", or "u" standard format specifier.

Возвращаемое значение и DateTime. KindThe return value and DateTime.Kind

Перегрузки DateTime.Parse возвращают значение DateTime, чье свойство Kind включает сведения о часовом поясе.The DateTime.Parse overloads return a DateTime value whose Kind property includes time zone information. Это может означать, что время:It can indicate that the time is:

  • Время в формате UTC (System.DateTimeKind.Utc).Coordinated Universal Time (System.DateTimeKind.Utc).
  • Время в местном часовом поясе (System.DateTimeKind.Local).The time in the local time zone (System.DateTimeKind.Local).
  • Время в неизвестном часовом поясе (xref: System. DateTimeKind. не указано? displayProperty = fullName >).The time in an unknown time zone (xref:System.DateTimeKind.Unspecified?displayProperty=fullName>).

Как правило, метод Parse возвращает объект DateTime, свойство Kind которого имеет значение DateTimeKind.Unspecified.Generally, the Parse method returns a DateTime object whose Kind property is DateTimeKind.Unspecified. Однако метод Parse также может выполнять преобразование часовых поясов и задавать значение свойства Kind по-разному в зависимости от значений параметров s и styles:However, the Parse method may also perform time zone conversion and set the value of the Kind property differently, depending on the values of the s and styles parameters:

IfIf Преобразование часового поясаTime zone conversion Kind, свойствоKind property
s содержит сведения о часовом поясе.s contains time zone information. Дата и время преобразуются во время в местном часовом поясе.The date and time is converted to the time in the local time zone. DateTimeKind.Local
s содержит сведения о часовом поясе, а styles включает флаг AdjustToUniversal.s contains time zone information, and styles includes the AdjustToUniversal flag. Дата и время преобразуются в время в формате UTC.The date and time is converted to Coordinated Universal Time (UTC). DateTimeKind.Utc
s содержит обозначение часового пояса Z или GMT, а styles включает флаг RoundtripKind.s contains the Z or GMT time zone designator, and styles includes the RoundtripKind flag. Дата и время считаются в формате UTC.The date and time are interpreted as UTC. DateTimeKind.Utc

В следующем примере строки даты, содержащие сведения о часовом поясе, преобразуются в время в местном часовом поясе:The following example converts date strings that contain time zone information to the time in the local time zone:

using System;

public class Example
{
   public static void Main()
   {
      string[] dateStrings = {"2008-05-01T07:34:42-5:00", 
                              "2008-05-01 7:34:42Z", 
                              "Thu, 01 May 2008 07:34:42 GMT"};
      foreach (string dateString in dateStrings)
      {
         DateTime convertedDate = DateTime.Parse(dateString);
         Console.WriteLine($"Converted {dateString} to {convertedDate.Kind} time {convertedDate}");
      }                              
   }
}
// These calls to the DateTime.Parse method display the following output:
//  Converted 2008-05-01T07:34:42-5:00 to Local time 5/1/2008 5:34:42 AM
//  Converted 2008-05-01 7:34:42Z to Local time 5/1/2008 12:34:42 AM
//  Converted Thu, 01 May 2008 07:34:42 GMT to Local time 5/1/2008 12:34:42 AM                                             
Module Example
   Public Sub Main()
      Dim dateStrings() As String = {"2008-05-01T07:34:42-5:00", 
                                     "2008-05-01 7:34:42Z", 
                                     "Thu, 01 May 2008 07:34:42 GMT"}
      
      For Each dateStr In dateStrings
         Dim convertedDate As Date = Date.Parse(dateStr)
         Console.WriteLine($"Converted {dateStr} to {convertedDate.Kind} time {convertedDate}")
      Next 
   End Sub
End Module
' These calls to the DateTime.Parse method display the following output:
'   Converted 2008-05-01T07:34:42-5:00 to Local time 5/1/2008 5:34:42 AM
'   Converted 2008-05-01 7:34:42Z to Local time 5/1/2008 12:34:42 AM
'   Converted Thu, 01 May 2008 07:34:42 GMT to Local time 5/1/2008 12:34:42 AM                                             

Кроме того, значение свойства Kind можно сохранить во время операции форматирования и анализа с помощью флага DateTimeStyles.RoundtripKind.You can also preserve the value of a date and time's Kind property during a formatting and parsing operation by using the DateTimeStyles.RoundtripKind flag. В следующем примере показано влияние флага RoundtripKind на операцию синтаксического анализа значений DateTime, которые преобразуются в строки с помощью описателя формата "o", "r" или "u".The following example illustrates how the RoundtripKind flag affects the parsing operation on DateTime values that are converted to strings by using the "o", "r", or "u" format specifier.

   string[] formattedDates = { "2008-09-15T09:30:41.7752486-07:00", 
                               "2008-09-15T09:30:41.7752486Z",  
                               "2008-09-15T09:30:41.7752486",  
                               "2008-09-15T09:30:41.7752486-04:00", 
                               "Mon, 15 Sep 2008 09:30:41 GMT" };
   foreach (string formattedDate in formattedDates)
   {
      Console.WriteLine(formattedDate);
      DateTime roundtripDate = DateTime.Parse(formattedDate, null, 
                                              DateTimeStyles.RoundtripKind);                        
      Console.WriteLine($"   With RoundtripKind flag: {roundtripDate} {roundtripDate.Kind} time.");
   
      DateTime noRoundtripDate = DateTime.Parse(formattedDate, null, 
                                                DateTimeStyles.None);
      Console.WriteLine($"   Without RoundtripKind flag: {noRoundtripDate} {noRoundtripDate.Kind} time.");
   }         
// The example displays the following output:
//       2008-09-15T09:30:41.7752486-07:00
//          With RoundtripKind flag: 9/15/2008 9:30:41 AM Local time.
//          Without RoundtripKind flag: 9/15/2008 9:30:41 AM Local time.
//       2008-09-15T09:30:41.7752486Z
//          With RoundtripKind flag: 9/15/2008 9:30:41 AM Utc time.
//          Without RoundtripKind flag: 9/15/2008 2:30:41 AM Local time.
//       2008-09-15T09:30:41.7752486
//          With RoundtripKind flag: 9/15/2008 9:30:41 AM Unspecified time.
//          Without RoundtripKind flag: 9/15/2008 9:30:41 AM Unspecified time.
//       2008-09-15T09:30:41.7752486-04:00
//          With RoundtripKind flag: 9/15/2008 6:30:41 AM Local time.
//          Without RoundtripKind flag: 9/15/2008 6:30:41 AM Local time.
//       Mon, 15 Sep 2008 09:30:41 GMT
//          With RoundtripKind flag: 9/15/2008 9:30:41 AM Utc time.
//          Without RoundtripKind flag: 9/15/2008 2:30:41 AM Local time.      
Dim formattedDates() = { "2008-09-15T09:30:41.7752486-07:00", 
                           "2008-09-15T09:30:41.7752486Z",  
                           "2008-09-15T09:30:41.7752486",  
                           "2008-09-15T09:30:41.7752486-04:00", 
                           "Mon, 15 Sep 2008 09:30:41 GMT" }
For Each formattedDate In formattedDates
   Console.WriteLine(formattedDate)
   Dim roundtripDate = DateTime.Parse(formattedDate, Nothing,  
                                      DateTimeStyles.RoundtripKind)                        
   Console.WriteLine($"   With RoundtripKind flag: {roundtripDate} {roundtripDate.Kind} time.")                                          
   Dim noRoundtripDate = DateTime.Parse(formattedDate, Nothing,                                                                                                  DateTimeStyles.None)
   Console.WriteLine($"   Without RoundtripKind flag: {noRoundtripDate} {noRoundtripDate.Kind} time.")
Next         
' The example displays the following output:
'       2008-09-15T09:30:41.7752486-07:00
'          With RoundtripKind flag: 9/15/2008 9:30:41 AM Local time.
'          Without RoundtripKind flag: 9/15/2008 9:30:41 AM Local time.
'       2008-09-15T09:30:41.7752486Z
'          With RoundtripKind flag: 9/15/2008 9:30:41 AM Utc time.
'          Without RoundtripKind flag: 9/15/2008 2:30:41 AM Local time.
'       2008-09-15T09:30:41.7752486
'          With RoundtripKind flag: 9/15/2008 9:30:41 AM Unspecified time.
'          Without RoundtripKind flag: 9/15/2008 9:30:41 AM Unspecified time.
'       2008-09-15T09:30:41.7752486-04:00
'          With RoundtripKind flag: 9/15/2008 6:30:41 AM Local time.
'          Without RoundtripKind flag: 9/15/2008 6:30:41 AM Local time.
'       Mon, 15 Sep 2008 09:30:41 GMT
'          With RoundtripKind flag: 9/15/2008 9:30:41 AM Utc time.
'          Without RoundtripKind flag: 9/15/2008 2:30:41 AM Local time.      

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.

public:
 static DateTime Parse(System::String ^ s);
public static DateTime Parse (string s);
static member Parse : string -> DateTime
Public Shared Function Parse (s As String) As DateTime

Параметры

s
String String String String

Строка, содержащая дату и время, которые нужно преобразовать.A string that contains a date and time to convert. Дополнительные сведения см. в разделе Строка для анализа.See The string to parse for more information.

Возвраты

Объект, эквивалентный дате и времени, содержащимся в параметре s.An object that is equivalent to the date and time contained in s.

Исключения

Параметр s не содержит допустимое строковое представление даты и времени.s does not contain a valid string representation of a date and time.

Комментарии

Если s содержит сведения о часовом поясе, этот метод возвращает значение DateTime, свойство Kind которого равно DateTimeKind.Local, и преобразует дату и время в s в местное время.If s contains time zone information, this method returns a DateTime value whose Kind property is DateTimeKind.Local and converts the date and time in s to local time. В противном случае он не выполняет преобразование часового пояса и возвращает значение DateTime, свойство Kind которого равно DateTimeKind.Unspecified.Otherwise, it performs no time zone conversion and returns a DateTime value whose Kind property is DateTimeKind.Unspecified.

Эта перегрузка пытается проанализировать s, используя соглашения о форматировании для текущего языка и региональных параметров.This overload attempts to parse s by using the formatting conventions of the current culture. Текущий язык и региональные параметры указываются свойством CurrentCulture.The current culture is indicated by the CurrentCulture property. Чтобы выполнить синтаксический анализ строки с помощью соглашений о форматировании для определенного языка и региональных параметров, вызовите Parse(String, IFormatProvider) или Parse(String, IFormatProvider, DateTimeStyles) перегрузки.To parse a string using the formatting conventions of a specific culture, call the Parse(String, IFormatProvider) or the Parse(String, IFormatProvider, DateTimeStyles) overloads.

Эта перегрузка пытается проанализировать s с помощью стиля DateTimeStyles.AllowWhiteSpaces.This overload attempts to parse s by using DateTimeStyles.AllowWhiteSpaces style.

ПримерExample

В следующем примере выполняется синтаксический анализ строкового представления нескольких значений даты и времени:The following example parses the string representation of several date and time values by:

  • С помощью поставщика формата по умолчанию, который предоставляет соглашения о форматировании языка и региональных параметров текущего потока компьютера, используемого для создания примера выходных данных.Using the default format provider, which provides the formatting conventions of the current thread culture of the computer used to produce the example output. Выходные данные в этом примере отражают соглашения о форматировании для языка и региональных параметров en-US.The output from this example reflects the formatting conventions of the en-US culture.

  • Использование значения стиля по умолчанию, которое равно AllowWhiteSpaces.Using the default style value, which is AllowWhiteSpaces.

Он обрабатывает исключение FormatException, которое выдается, когда метод пытается проанализировать строковое представление даты и времени с помощью других соглашений о форматировании языка и региональных параметров.It handles the FormatException exception that is thrown when the method tries to parse the string representation of a date and time by using some other culture's formatting conventions. Также показано, как успешно выполнить синтаксический анализ значения даты и времени, которое не использует соглашения о форматировании языка и региональных параметров текущего потока.It also shows how to successfully parse a date and time value that does not use the formatting conventions of the current thread culture.

using System;
using System.Globalization;

public class DateTimeParser
{
   public static void Main()
   {
      // Assume the current culture is en-US. 
      // The date is February 16, 2008, 12 hours, 15 minutes and 12 seconds.

      // Use standard en-US date and time value
      DateTime dateValue;
      string dateString = "2/16/2008 12:15:12 PM";
      try {
         dateValue = DateTime.Parse(dateString);
         Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue);
      }   
      catch (FormatException) {
         Console.WriteLine("Unable to convert '{0}'.", dateString);
      }
            
      // Reverse month and day to conform to the fr-FR culture.
      // The date is February 16, 2008, 12 hours, 15 minutes and 12 seconds.
      dateString = "16/02/2008 12:15:12";
      try {
         dateValue = DateTime.Parse(dateString);
         Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue);
      }   
      catch (FormatException) {
         Console.WriteLine("Unable to convert '{0}'.", dateString);
      }

      // Call another overload of Parse to successfully convert string
      // formatted according to conventions of fr-FR culture.      
      try {
         dateValue = DateTime.Parse(dateString, new CultureInfo("fr-FR", false));
         Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue);
      }   
      catch (FormatException) {
         Console.WriteLine("Unable to convert '{0}'.", dateString);
      }
      
      // Parse string with date but no time component.
      dateString = "2/16/2008";
      try {
         dateValue = DateTime.Parse(dateString);
         Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue);
      }   
      catch (FormatException) {
         Console.WriteLine("Unable to convert '{0}'.", dateString);
      }   
   }
}
// The example displays the following output to the console:
//       '2/16/2008 12:15:12 PM' converted to 2/16/2008 12:15:12 PM.
//       Unable to convert '16/02/2008 12:15:12'.
//       '16/02/2008 12:15:12' converted to 2/16/2008 12:15:12 PM.
//       '2/16/2008' converted to 2/16/2008 12:00:00 AM.
Imports System.Globalization

Class DateTimeParser
   Public Shared Sub Main()
      ' Assume the current culture is en-US. 
      ' The date is February 16, 2008, 12 hours, 15 minutes and 12 seconds.

      ' Use standard en-US date and time value
      Dim dateValue As Date
      Dim dateString As String = "2/16/2008 12:15:12 PM"
      Try
         dateValue = Date.Parse(dateString)
         Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue)
      Catch e As FormatException
         Console.WriteLine("Unable to convert '{0}'.", dateString)
      End Try
            
      ' Reverse month and day to conform to the fr-FR culture.
      ' The date is February 16, 2008, 12 hours, 15 minutes and 12 seconds.
      dateString = "16/02/2008 12:15:12"
      Try
         dateValue = Date.Parse(dateString)
         Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue)
      Catch e As FormatException
         Console.WriteLine("Unable to convert '{0}'.", dateString)
      End Try

      ' Call another overload of Parse to successfully convert string
      ' formatted according to conventions of fr-FR culture.      
      Try
         dateValue = Date.Parse(dateString, New CultureInfo("fr-FR", False))
         Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue)
      Catch e As FormatException
         Console.WriteLine("Unable to convert '{0}'.", dateString)
      End Try
      
      ' Parse string with date but no time component.
      dateString = "2/16/2008"
      Try
         dateValue = Date.Parse(dateString)
         Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue)
      Catch e As FormatException
         Console.WriteLine("Unable to convert '{0}'.", dateString)
      End Try
   End Sub 
End Class 
' The example displays the following output to the console:
'       '2/16/2008 12:15:12 PM' converted to 2/16/2008 12:15:12 PM.
'       Unable to convert '16/02/2008 12:15:12'.
'       '16/02/2008 12:15:12' converted to 2/16/2008 12:15:12 PM.
'       '2/16/2008' converted to 2/16/2008 12:00:00 AM.
Дополнительно

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.

public:
 static DateTime Parse(System::String ^ s, IFormatProvider ^ provider);
public static DateTime Parse (string s, IFormatProvider provider);
static member Parse : string * IFormatProvider -> DateTime
Public Shared Function Parse (s As String, provider As IFormatProvider) As DateTime

Параметры

s
String String String String

Строка, содержащая дату и время, которые нужно преобразовать.A string that contains a date and time to convert. Дополнительные сведения см. в разделе Строка для анализа.See The string to parse for more information.

provider
IFormatProvider IFormatProvider IFormatProvider IFormatProvider

Объект, предоставляющий сведения о формате параметра s для определенного языка и региональных параметров.An object that supplies culture-specific format information about s. См. раздел Анализ и соглашения для языка и региональных параметровSee Parsing and cultural conventions

Возвраты

Объект, эквивалентный дате и времени, которые содержатся в параметре s, определяемом параметром provider.An object that is equivalent to the date and time contained in s as specified by provider.

Исключения

Параметр s не содержит допустимое строковое представление даты и времени.s does not contain a valid string representation of a date and time.

Комментарии

Если s содержит сведения о часовом поясе, этот метод возвращает значение DateTime, свойство Kind которого равно DateTimeKind.Local, и преобразует дату и время в s в местное время.If s contains time zone information, this method returns a DateTime value whose Kind property is DateTimeKind.Local and converts the date and time in s to local time. В противном случае он не выполняет преобразование часового пояса и возвращает значение DateTime, свойство Kind которого равно DateTimeKind.Unspecified.Otherwise, it performs no time zone conversion and returns a DateTime value whose Kind property is DateTimeKind.Unspecified.

Эта перегрузка пытается выполнить синтаксический анализ s с помощью стиля DateTimeStyles.AllowWhiteSpaces.This overload attempts to parse s by using the DateTimeStyles.AllowWhiteSpaces style.

ПримерExample

В следующем примере выполняется синтаксический анализ массива строк даты с использованием соглашений о языках и региональных параметрах en-US, fr-FR и de-DE.The following example parses an array of date strings by using the conventions of the en-US, fr-FR, and de-DE cultures. В нем показано, что строковые представления одной даты могут интерпретироваться по-разному в разных культурах.It demonstrates that the string representations of a single date can be interpreted differently across different cultures.

using System;
using System.Globalization;

public class ParseDate
{
   public static void Main()
   {
      // Define cultures to be used to parse dates.
      CultureInfo[] cultures = {CultureInfo.CreateSpecificCulture("en-US"), 
                                CultureInfo.CreateSpecificCulture("fr-FR"), 
                                CultureInfo.CreateSpecificCulture("de-DE")};
      // Define string representations of a date to be parsed.
      string[] dateStrings = {"01/10/2009 7:34 PM", 
                              "10.01.2009 19:34", 
                              "10-1-2009 19:34" };
      // Parse dates using each culture.
      foreach (CultureInfo culture in cultures)
      {
         DateTime dateValue;
         Console.WriteLine("Attempted conversions using {0} culture.", 
                           culture.Name);
         foreach (string dateString in dateStrings)
         {
            try {
               dateValue = DateTime.Parse(dateString, culture);
               Console.WriteLine("   Converted '{0}' to {1}.",
                                 dateString, dateValue.ToString("f", culture));
            }
            catch (FormatException) {
               Console.WriteLine("   Unable to convert '{0}' for culture {1}.", 
                                 dateString, culture.Name);
            }
         }
         Console.WriteLine();
      }                                                                                     
   }
}
// The example displays the following output to the console:
//       Attempted conversions using en-US culture.
//          Converted '01/10/2009 7:34 PM' to Saturday, January 10, 2009 7:34 PM.
//          Converted '10.01.2009 19:34' to Thursday, October 01, 2009 7:34 PM.
//          Converted '10-1-2009 19:34' to Thursday, October 01, 2009 7:34 PM.
//       
//       Attempted conversions using fr-FR culture.
//          Converted '01/10/2009 7:34 PM' to jeudi 1 octobre 2009 19:34.
//          Converted '10.01.2009 19:34' to samedi 10 janvier 2009 19:34.
//          Converted '10-1-2009 19:34' to samedi 10 janvier 2009 19:34.
//       
//       Attempted conversions using de-DE culture.
//          Converted '01/10/2009 7:34 PM' to Donnerstag, 1. Oktober 2009 19:34.
//          Converted '10.01.2009 19:34' to Samstag, 10. Januar 2009 19:34.
//          Converted '10-1-2009 19:34' to Samstag, 10. Januar 2009 19:34.
Imports System.Globalization

Module ParseDate
   Public Sub Main()
      ' Define cultures to be used to parse dates.
      Dim cultures() As CultureInfo = {CultureInfo.CreateSpecificCulture("en-US"), _
                                       CultureInfo.CreateSpecificCulture("fr-FR"), _
                                       CultureInfo.CreateSpecificCulture("de-DE")}
      ' Define string representations of a date to be parsed.
      Dim dateStrings() As String = {"01/10/2009 7:34 PM", _
                                     "10.01.2009 19:34", _
                                     "10-1-2009 19:34" }
      ' Parse dates using each culture.
      For Each culture In cultures
         Dim dateValue As Date
         Console.WriteLine("Attempted conversions using {0} culture.", culture.Name)
         For Each dateString As String In dateStrings
            Try
               dateValue = Date.Parse(dateString, culture)
               Console.WriteLine("   Converted '{0}' to {1}.", _
                                 dateString, dateValue.ToString("f", culture))
            Catch e As FormatException
               Console.WriteLine("   Unable to convert '{0}' for culture {1}.", _
                                 dateString, culture.Name)
            End Try                                                
         Next
         Console.WriteLine()
      Next                                                                                     
   End Sub
End Module
' The example displays the following output to the console:
'       Attempted conversions using en-US culture.
'          Converted '01/10/2009 7:34 PM' to Saturday, January 10, 2009 7:34 PM.
'          Converted '10.01.2009 19:34' to Thursday, October 01, 2009 7:34 PM.
'          Converted '10-1-2009 19:34' to Thursday, October 01, 2009 7:34 PM.
'       
'       Attempted conversions using fr-FR culture.
'          Converted '01/10/2009 7:34 PM' to jeudi 1 octobre 2009 19:34.
'          Converted '10.01.2009 19:34' to samedi 10 janvier 2009 19:34.
'          Converted '10-1-2009 19:34' to samedi 10 janvier 2009 19:34.
'       
'       Attempted conversions using de-DE culture.
'          Converted '01/10/2009 7:34 PM' to Donnerstag, 1. Oktober 2009 19:34.
'          Converted '10.01.2009 19:34' to Samstag, 10. Januar 2009 19:34.
'          Converted '10-1-2009 19:34' to Samstag, 10. Januar 2009 19:34.
Дополнительно

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

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

public static DateTime Parse (ReadOnlySpan<char> s, IFormatProvider provider = null, System.Globalization.DateTimeStyles styles = System.Globalization.DateTimeStyles.None);
static member Parse : ReadOnlySpan<char> * IFormatProvider * System.Globalization.DateTimeStyles -> DateTime
Public Shared Function Parse (s As ReadOnlySpan(Of Char), Optional provider As IFormatProvider = null, Optional styles As DateTimeStyles = System.Globalization.DateTimeStyles.None) As DateTime

Параметры

s
ReadOnlySpan<Char>

Область памяти, которая содержит строку для анализа.The memory span that contains the string to parse. Дополнительные сведения см. в разделе Строка для анализа.See The string to parse for more information.

provider
IFormatProvider IFormatProvider IFormatProvider IFormatProvider

Объект, предоставляющий сведения о формате параметра s для определенного языка и региональных параметров.An object that supplies culture-specific format information about s. См. раздел Анализ и соглашения для языка и региональных параметровSee Parsing and cultural conventions

styles
DateTimeStyles DateTimeStyles DateTimeStyles DateTimeStyles

Побитовая комбинация значений перечисления, показывающая элементы стиля, которые могут присутствовать в параметре s, чтобы операция анализа прошла успешно. Данная комбинация определяет способ интерпретации анализируемых данных с учетом текущего часового пояса или текущей даты.A bitwise combination of the enumeration values that indicates the style elements that can be present in s for the parse operation to succeed, and that defines how to interpret the parsed date in relation to the current time zone or the current date. Обычно указывается значение None.A typical value to specify is None.

Возвраты

Объект, эквивалентный дате и времени, которые содержатся в параметре s, определяемом параметрами provider и styles.An object that is equivalent to the date and time contained in s, as specified by provider and styles.

Исключения

s не содержит допустимое строковое представление даты и времени.s does not contain a valid string representation of a date and time.

Параметр styles содержит недопустимое сочетание значений DateTimeStyles.styles contains an invalid combination of DateTimeStyles values. Например, и AssumeLocal, и AssumeUniversal.For example, both AssumeLocal and AssumeUniversal.

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.

public:
 static DateTime Parse(System::String ^ s, IFormatProvider ^ provider, System::Globalization::DateTimeStyles styles);
public static DateTime Parse (string s, IFormatProvider provider, System.Globalization.DateTimeStyles styles);
static member Parse : string * IFormatProvider * System.Globalization.DateTimeStyles -> DateTime
Public Shared Function Parse (s As String, provider As IFormatProvider, styles As DateTimeStyles) As DateTime

Параметры

s
String String String String

Строка, содержащая дату и время, которые нужно преобразовать.A string that contains a date and time to convert. Дополнительные сведения см. в разделе Строка для анализа.See The string to parse for more information.

provider
IFormatProvider IFormatProvider IFormatProvider IFormatProvider

Объект, который предоставляет сведения о форматировании параметра s в зависимости от языка и региональных параметров.An object that supplies culture-specific formatting information about s. См. раздел Анализ и соглашения для языка и региональных параметровSee Parsing and cultural conventions

styles
DateTimeStyles DateTimeStyles DateTimeStyles DateTimeStyles

Побитовая комбинация значений перечисления, показывающая элементы стиля, которые могут присутствовать в параметре s, чтобы операция анализа прошла успешно. Данная комбинация определяет способ интерпретации анализируемых данных с учетом текущего часового пояса или текущей даты.A bitwise combination of the enumeration values that indicates the style elements that can be present in s for the parse operation to succeed, and that defines how to interpret the parsed date in relation to the current time zone or the current date. Обычно указывается значение None.A typical value to specify is None.

Возвраты

Объект, эквивалентный дате и времени, которые содержатся в параметре s, определяемом параметрами provider и styles.An object that is equivalent to the date and time contained in s, as specified by provider and styles.

Исключения

Свойство s имеет значение null.s is null.

s не содержит допустимое строковое представление даты и времени.s does not contain a valid string representation of a date and time.

Параметр styles содержит недопустимое сочетание значений DateTimeStyles.styles contains an invalid combination of DateTimeStyles values. Например, значения AssumeLocal и AssumeUniversal.For example, both AssumeLocal and AssumeUniversal.

Комментарии

Эта перегрузка метода преобразует дату и время в s и устанавливает свойство Kind возвращаемого значения DateTime следующим образом:This method overload converts the date and time in s and sets the Kind property of the returned DateTime value as follows:

IfIf Преобразование часового поясаTime zone conversion Kind, свойствоKind property
s не содержит сведений о часовом поясе.s contains no time zone information. Отсутствует.None. DateTimeKind.Unspecified
s содержит сведения о часовом поясе.s contains time zone information. К времени в местном часовом поясеTo the time in the local time zone DateTimeKind.Local
s содержит сведения о часовом поясе, а styles включает флаг DateTimeStyles.AdjustToUniversal.s contains time zone information, and styles includes the DateTimeStyles.AdjustToUniversal flag. В время в формате UTCTo Coordinated Universal Time (UTC) DateTimeKind.Utc
s содержит обозначение часового пояса Z или GMT, а styles включает DateTimeStyles.RoundtripKind.s contains the Z or GMT time zone designator, and styles includes the DateTimeStyles.RoundtripKind. Отсутствует.None. DateTimeKind.Utc

ПримерExample

В следующем примере демонстрируется метод Parse(String, IFormatProvider, DateTimeStyles) и отображается значение свойства Kind результирующего значения DateTime.The following example demonstrates the Parse(String, IFormatProvider, DateTimeStyles) method and displays the value of the Kind property of the resulting DateTime values.

using System;
using System.Globalization;

public class ParseDateExample
{
   public static void Main()
   {
      string dateString;
      CultureInfo culture ;
      DateTimeStyles styles;
      DateTime result;
      
      // Parse a date and time with no styles.
      dateString = "03/01/2009 10:00 AM";
      culture = CultureInfo.CreateSpecificCulture("en-US");
      styles = DateTimeStyles.None;
      try {
         result = DateTime.Parse(dateString, culture, styles);
         Console.WriteLine("{0} converted to {1} {2}.", 
                           dateString, result, result.Kind.ToString());
      }
      catch (FormatException) {
         Console.WriteLine("Unable to convert {0} to a date and time.", 
                           dateString);
      }      
      
      // Parse the same date and time with the AssumeLocal style.
      styles = DateTimeStyles.AssumeLocal;
      try {
         result = DateTime.Parse(dateString, culture, styles);
         Console.WriteLine("{0} converted to {1} {2}.", 
                           dateString, result, result.Kind.ToString());
      }
      catch (FormatException) {
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString);
      }      
      
      // Parse a date and time that is assumed to be local.
      // This time is five hours behind UTC. The local system's time zone is 
      // eight hours behind UTC.
      dateString = "2009/03/01T10:00:00-5:00";
      styles = DateTimeStyles.AssumeLocal;
      try {
         result = DateTime.Parse(dateString, culture, styles);
         Console.WriteLine("{0} converted to {1} {2}.", 
                           dateString, result, result.Kind.ToString());
      }
      catch (FormatException) {
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString);
      }      
      
      // Attempt to convert a string in improper ISO 8601 format.
      dateString = "03/01/2009T10:00:00-5:00";
      try {
         result = DateTime.Parse(dateString, culture, styles);
         Console.WriteLine("{0} converted to {1} {2}.", 
                           dateString, result, result.Kind.ToString());
      }                     
      catch (FormatException) {
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString);
      }      

      // Assume a date and time string formatted for the fr-FR culture is the local 
      // time and convert it to UTC.
      dateString = "2008-03-01 10:00";
      culture = CultureInfo.CreateSpecificCulture("fr-FR");
      styles = DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeLocal;
      try {
         result = DateTime.Parse(dateString, culture, styles);
         Console.WriteLine("{0} converted to {1} {2}.", 
                           dateString, result, result.Kind.ToString());
      }
      catch (FormatException) {
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString);
      }      
   }
}
// The example displays the following output to the console:
//       03/01/2009 10:00 AM converted to 3/1/2009 10:00:00 AM Unspecified.
//       03/01/2009 10:00 AM converted to 3/1/2009 10:00:00 AM Local.
//       2009/03/01T10:00:00-5:00 converted to 3/1/2009 7:00:00 AM Local.
//       Unable to convert 03/01/2009T10:00:00-5:00 to a date and time.
//       2008-03-01 10:00 converted to 3/1/2008 6:00:00 PM Utc.
Imports System.Globalization

Module ParseDateExample
   Public Sub Main()
      Dim dateString As String  
      Dim culture As CultureInfo
      Dim styles As DateTimeStyles 
      Dim result As DateTime
      
      ' Parse a date and time with no styles.
      dateString = "03/01/2009 10:00 AM"
      culture = CultureInfo.CreateSpecificCulture("en-US")
      styles = DateTimeStyles.None
      Try
         result = DateTime.Parse(dateString, culture, styles)
         Console.WriteLine("{0} converted to {1} {2}.", _
                           dateString, result, result.Kind.ToString())
      Catch e As FormatException
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
      End Try      
      
      ' Parse the same date and time with the AssumeLocal style.
      styles = DateTimeStyles.AssumeLocal
      Try
         result = DateTime.Parse(dateString, culture, styles)
         Console.WriteLine("{0} converted to {1} {2}.", _
                           dateString, result, result.Kind.ToString())
      Catch e As FormatException
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
      End Try      
      
      ' Parse a date and time that is assumed to be local.
      ' This time is five hours behind UTC. The local system's time zone is 
      ' eight hours behind UTC.
      dateString = "2009/03/01T10:00:00-5:00"
      styles = DateTimeStyles.AssumeLocal
      Try
         result = DateTime.Parse(dateString, culture, styles)
         Console.WriteLine("{0} converted to {1} {2}.", _
                           dateString, result, result.Kind.ToString())
      Catch e As FormatException
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
      End Try      
      
      ' Attempt to convert a string in improper ISO 8601 format.
      dateString = "03/01/2009T10:00:00-5:00"
      Try
         result = DateTime.Parse(dateString, culture, styles)
         Console.WriteLine("{0} converted to {1} {2}.", _
                           dateString, result, result.Kind.ToString())
      Catch e As FormatException
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
      End Try      

      ' Assume a date and time string formatted for the fr-FR culture is the local 
      ' time and convert it to UTC.
      dateString = "2008-03-01 10:00"
      culture = CultureInfo.CreateSpecificCulture("fr-FR")
      styles = DateTimeStyles.AdjustToUniversal Or DateTimeStyles.AssumeLocal
      Try
         result = DateTime.Parse(dateString, culture, styles)
         Console.WriteLine("{0} converted to {1} {2}.", _
                           dateString, result, result.Kind.ToString())
      Catch e As FormatException
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
      End Try      
   End Sub
End Module
'
' The example displays the following output to the console:
'       03/01/2009 10:00 AM converted to 3/1/2009 10:00:00 AM Unspecified.
'       03/01/2009 10:00 AM converted to 3/1/2009 10:00:00 AM Local.
'       2009/03/01T10:00:00-5:00 converted to 3/1/2009 7:00:00 AM Local.
'       Unable to convert 03/01/2009T10:00:00-5:00 to a date and time.
'       2008-03-01 10:00 converted to 3/1/2008 6:00:00 PM Utc.
Дополнительно

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