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. Передайте в ToString(String) метод строку стандартного формата "o" или "r" и 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

Метод пытается преобразовать строковое представление значения даты и времени в его DateTime эквивалент. ParseThe 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 текущего календаря текущего языка и региональных параметров или текущего календаря указанного языка и региональных параметров (если используется перегрузка с аргументом, отличным от NULL 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.

  • Строка с компонентом даты, включающая только месяц и день, но не компонент 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) перегрузку и не включает styles DateTimeStyles.NoCurrentDateDefault в аргумент. в этом случае метод принимает дату 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 И provider являетсяAnd 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) Пользовательская 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 and платформа динамических данных" статьи.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 При необходимости выполняет синтаксический анализ ипреобразуетеговформатUTCследующимобразом:sParses s and, if necessary, converts it to UTC, as follows:

— Если s параметр включает смещение часового пояса s или не содержит сведений о часовом AssumeLocal поясе, но styles включает флаг, метод анализирует строку, вызывает 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 указывает, что он представляет время в формате s UTC или не содержит сведений о часовом AssumeUniversal поясе, но styles включает флаг, метод анализирует строку, не выполняет преобразование часового пояса для 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 значение перечисления, такое как. NoneIt 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. Если флаг не указан Kind , свойство возвращаемого DateTime значения устанавливается в DateTimeKind.Localзначение. AdjustToUniversalUnless 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. Если флаг не указан, метод преобразует возвращенное DateTime значение из времени в формате UTC в местное время и устанавливает Kind для его DateTimeKind.Localсвойства значение. AdjustToUniversalUnless 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 возвращают значение, свойство Kind которого содержит сведения о часовом поясе. DateTime.ParseThe 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. Однако метод может также выполнить преобразование часового пояса и задать значение Kind свойства по s -разному в зависимости от значений параметров и styles: ParseHowever, 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 имеет значение 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 и 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содержит сведения о часовом поясе, а " DateTimeStyles.AdjustToUniversal styles" включает флаг.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. 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.
Дополнительно

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