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 / репозитории примеров 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 (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.TryParseExact методDateTime.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 аргумент).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.

  • Строка с компонентом даты, который включает в себя только месяц и день, но ни один компонент года.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.0000000Z»"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) Объект DateTimeFormatInfo объектаa DateTimeFormatInfo object Указанный DateTimeFormatInfo объектаThe 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) Объект CultureInfo объектаa CultureInfo object Свойство CultureInfo.DateTimeFormat.The CultureInfo.DateTimeFormat property
Parse(String, IFormatProvider) или Parse(String, IFormatProvider, DateTimeStyles)Parse(String, IFormatProvider) or Parse(String, IFormatProvider, DateTimeStyles) Custom IFormatProvider реализацииCustom 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 и динамические данные» в 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 раздела.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.

Член DateTimeStylesDateTimeStyles 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:

  • Универсальное координированное время (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.Unspecified?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 Свойства KindKind 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 в формате 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 имеет значение null.s is null.

Параметр 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 и ru ru языков и региональных параметров.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 Свойства KindKind 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 содержит сведения о часовом поясе, и "включает стили DateTimeStyles.AdjustToUniversal флаг.s contains time zone information, and `styles includes the DateTimeStyles.AdjustToUniversal flag. К всеобщему скоординированному времени (UTC)To 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. 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.
Дополнительно

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