DateTime.Parse Метод

Определение

Преобразует строковое представление даты и времени в его эквивалент DateTime.

Перегрузки

Parse(String)

Преобразует строковое представление даты и времени в его DateTime эквивалент с помощью соглашений текущего языка и региональных параметров.

Parse(ReadOnlySpan<Char>, IFormatProvider)

Анализирует диапазон символов в значение.

Parse(String, IFormatProvider)

Преобразует заданное строковое представление даты и времени в его эквивалент DateTime, используя сведения о форматировании, связанные с языком и региональными параметрами.

Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles)

Преобразует область памяти, которая содержит строковое представление даты и времени, в ее эквивалент DateTime, используя сведения о форматировании, связанные с языком и региональными параметрами, а также стиль форматирования.

Parse(String, IFormatProvider, DateTimeStyles)

Преобразует строковое представление даты и времени в его эквивалент DateTime, используя сведения о форматировании, связанные с языком и региональными параметрами, а также стиль форматирования.

Примеры

Многочисленные примеры, вызывающие метод, DateTime.Parse чередуются в разделе "Примечания " этой статьи и в документации по отдельным DateTime.Parse перегрузкам.

Примечание

Некоторые примеры C# в этой статье выполняются во встроенном средстве выполнения кода и на площадке Try.NET. Нажмите на кнопку Выполнить, чтобы выполнить пример в интерактивном окне. После выполнения кода вы можете изменить его и выполнить измененный код, снова нажав на кнопку Выполнить. Либо в интерактивном окне выполняется измененный код, либо, если компиляция завершается с ошибкой, в интерактивном окне отображаются все сообщения об ошибках компилятора C#.

Местный часовой пояс площадки и средства запуска встроенного кода Try.NET указан в формате UTC. Это может повлиять на работу и выходные данные примеров, иллюстрирующих DateTime, DateTimeOffset, типы TimeZoneInfo и их члены.

Вы также можете скачать полный набор примеров, включенных DateTime.Parse в проект .NET Core для C#.

Комментарии

Содержание

Какой метод вызывается?

Кому Вызов
Анализ строки даты и времени с помощью соглашений о текущем языке и региональных параметрах. Перегрузка Parse(String)
Анализ строки даты и времени с помощью соглашений определенного языка и региональных параметров. Parse(String, IFormatProvider) перегрузка (см. синтаксический анализ и культурные конвенции)
Анализ строки даты и времени со специальными элементами стиля (например, пробелами или пробелами). Перегрузка Parse(String, IFormatProvider, DateTimeStyles)
Анализ строки даты и времени, которая должна быть в определенном формате. DateTime.ParseExact или DateTime.TryParseExact
Анализ строки даты и времени и преобразование в utc или местное время. Перегрузка Parse(String, IFormatProvider, DateTimeStyles)
Анализ строки даты и времени без обработки исключений. Метод DateTime.TryParse
Восстановление (кругового пути) значения даты и времени, созданного операцией форматирования. Передайте строку стандартного формата "o" или "r" в ToString(String) метод и вызовите перегрузку Parse(String, IFormatProvider, DateTimeStyles) с помощью DateTimeStyles.RoundtripKind
Анализ строки даты и времени в фиксированном формате в пределах компьютера (и, возможно, культурных) границ. DateTime.ParseExact или DateTime.TryParseExact метод

Анализируемая строка.

Метод Parse пытается преобразовать строковое представление значения даты и времени в его DateTime эквивалент. Он пытается полностью проанализировать входную строку без исключения FormatException .

Важно!

Если операция синтаксического анализа завершается сбоем из-за нераспознанного строкового формата, Parse метод создает исключение FormatException, а TryParse метод возвращается false. Так как обработка исключений может быть дорогостоящей, следует использовать Parse , когда операция синтаксического анализа должна быть успешной, так как источник входных данных является доверенным. TryParse предпочтительнее при сбое синтаксического анализа, особенно потому, что источник входных данных не является доверенным, или у вас есть разумные значения по умолчанию для замены строк, которые не анализируются успешно.

Анализируемая строка может принимать любую из следующих форм:

  • Строка с датой и компонентом времени.

  • Строка с датой, но без компонента времени. Если компонент времени отсутствует, метод предполагает 12:00 полуночи. Если компонент даты имеет двухзначный год, он преобразуется в год на Calendar.TwoDigitYearMax основе текущего календаря языка и региональных параметров или текущего календаря указанного языка и региональных параметров (если используется перегрузка с аргументом, не имеющим значения NULL provider ).

  • Строка с компонентом даты, который включает только месяц и год, но не компонент дня. Метод предполагает первый день месяца.

  • Строка с компонентом даты, который включает только месяц и день, но не компонент года. Этот метод предполагает текущий год.

  • Строка с временем, но без компонента даты. Метод предполагает текущую дату, если вы не вызываете перегрузку Parse(String, IFormatProvider, DateTimeStyles) и включаете DateTimeStyles.NoCurrentDateDefault в styles аргумент, в этом случае метод предполагает дату 1 января 0001 года.

  • Строка с компонентом времени, который включает только час и конструктор AM/PM без компонента даты. Метод предполагает текущую дату и время без минут и секунд. Это поведение можно изменить, вызвав перегрузку Parse(String, IFormatProvider, DateTimeStyles) и включив DateTimeStyles.NoCurrentDateDefault в styles аргумент, в этом случае метод предполагает дату 1 января 0001 года.

  • Строка, содержащая сведения о часовом поясе и соответствующая стандарту ISO 8601. В следующих примерах первая строка обозначает скоординированное универсальное время (UTC), а вторая — время в часовом поясе, которое составляет семь часов до UTC:

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

  • Строка, содержащая конструктор GMT и соответствующую формату времени RFC 1123; Например:

    "Сб, 01 ноября 2008 19:35:00 GMT"

  • Строка, содержащая дату и время вместе со сведениями о смещениях часового пояса; Например:

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

В следующем примере строки анализируются в каждом из этих форматов с помощью соглашений о форматировании текущего языка и региональных параметров, которые в данном случае являются языком и региональными параметрами en-US:

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
module Parse6

open System

let  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" ]

printfn $"Today is {DateTime.Now:d}\n"

for dateAsString, description in dateInfo do
    printfn $"""{description + ":",-52} '{dateAsString}' --> {DateTime.Parse(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 метод успешно анализирует строку. Если входная строка представляет високосный день в невисокосном году, метод создает исключение FormatException.

Parse Так как метод пытается проанализировать строковое представление даты и времени с помощью правил форматирования текущего или указанного языка и региональных параметров, попытка анализа строки в разных языках и региональных параметрах может завершиться ошибкой. Чтобы проанализировать определенный формат даты и времени в разных языковых DateTime.ParseExact стандартах, используйте одну из перегрузок метода и предоставьте описатель формата.

Анализ и культурные соглашения

Все перегрузки Parse метода чувствительны к языку и региональным параметрам, если строка, которую необходимо проанализировать (которая представлена s в следующей таблице), соответствует шаблону ISO 8601. Операция синтаксического анализа использует сведения о форматировании в объекте, производном DateTimeFormatInfo следующим образом:

Важно!

Эры в японских календарях основаны на периодах царствования императоров. Таким образом, ожидается наступление новой эры. Например, 1 мая 2019 года в JapaneseCalendar и JapaneseLunisolarCalendar отмечено как начало эры Рэйва. Изменение эры затрагивает все приложения, использующие эти календари. Дополнительные сведения и определение того, затрагиваются ли ваши приложения, см. в разделе Обработка новой эры в японском календаре в .NET. сведения о тестировании приложений на Windows системах для обеспечения их готовности к изменению эры см. в разделе подготовка приложения к изменению японской эры. Дополнительные сведения о функциях .NET, поддерживающих календари с несколькими Эр, и рекомендации при работе с календарями, поддерживающими несколько эр, см. в разделе Работа с Эр.

Если вызван И provider есть Сведения о форматировании являются производными от
Parse(String) - Текущий язык и региональные параметры (DateTimeFormatInfo.CurrentInfo свойство)
Parse(String, IFormatProvider) или Parse(String, IFormatProvider, DateTimeStyles) объект DateTimeFormatInfo; Указанный DateTimeFormatInfo объект
Parse(String, IFormatProvider) или Parse(String, IFormatProvider, DateTimeStyles) null Текущий язык и региональные параметры (DateTimeFormatInfo.CurrentInfo свойство)
Parse(String, IFormatProvider) или Parse(String, IFormatProvider, DateTimeStyles) объект CultureInfo; Свойство CultureInfo.DateTimeFormat.
Parse(String, IFormatProvider) или Parse(String, IFormatProvider, DateTimeStyles) Пользовательская IFormatProvider реализация метод IFormatProvider.GetFormat ;

Если данные форматирования являются производными от DateTimeFormatInfo объекта, свойство определяет календарь, DateTimeFormatInfo.Calendar используемый в операции синтаксического анализа.

При анализе строки даты и времени с помощью DateTimeFormatInfo объекта с настроенными параметрами, отличными от стандартных языков и региональных параметров, используйте ParseExact метод вместо Parse метода, чтобы улучшить шансы на успешное преобразование. Нестандартная строка даты и времени может быть сложной и сложной для синтаксического анализа. Метод Parse пытается проанализировать строку с несколькими неявными шаблонами синтаксического анализа, все из которых могут завершиться ошибкой. Напротив, ParseExact метод требует явно назначить один или несколько точных шаблонов синтаксического анализа, которые, скорее всего, будут успешными. Дополнительные сведения см. в DateTimeFormatInfo разделе "DateTimeFormatInfo и Динамические данные".

Важно!

Обратите внимание, что соглашения о форматировании для определенного языка и региональных параметров являются динамическими и могут быть изменены. Это означает, что операции синтаксического анализа, зависящие от соглашений о форматировании языка и региональных параметров по умолчанию (текущего) или указывающих IFormatProvider объект, представляющий язык и региональные параметры, отличные от инвариантного языка и региональных параметров, может неожиданно завершиться сбоем, если произойдет какое-либо из следующих значений:

  • Данные, относящиеся к языку и региональным параметрам, изменились между основными или дополнительными версиями платформа .NET Framework или в результате обновления существующей версии платформа .NET Framework.
  • Данные, относящиеся к языку и региональным параметрам, отражают пользовательские настройки, которые могут отличаться от компьютера до компьютера или сеанса.
  • Данные, относящиеся к языку и региональным параметрам, представляют собой язык и региональные параметры замены, которые переопределяют параметры стандартного языка и региональных параметров или настраиваемого языка и региональных параметров.

Чтобы избежать трудностей при анализе данных и строк времени, связанных с изменениями в культурных данных, можно проанализировать строки даты и времени с помощью инвариантного языка и региональных параметров, либо вызвать ParseExact или TryParseExact метод и указать точный формат строки для анализа. При сериализации и десериализации данных даты и времени можно использовать соглашения о форматировании инвариантного языка и региональных параметров либо сериализовать и десериализовать DateTime значение в двоичном формате.

Дополнительные сведения см. в разделе "Динамические данные языка и региональных параметров" раздела CultureInfo и раздела "Сохранение значений DateTime" в DateTime разделе.

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

Все Parse перегрузки игнорируют начальные, внутренние или конечные пробелы во входной строке (которая представлена s в следующей таблице). Дата и время могут быть заключены в скобки с помощью пары символов начала и окончания номера ("#", U+0023) и могут содержать один или несколько символов NULL (U+0000).

Кроме того, перегрузка Parse(String, IFormatProvider, DateTimeStyles) имеет styles параметр, состоящий из одного или нескольких членов перечисления DateTimeStyles . Этот параметр определяет способ s интерпретации и способ преобразования операции s синтаксического анализа в дату и время. В следующей таблице описывается влияние каждого DateTimeStyles элемента на операцию синтаксического анализа.

Элемент DateTimeStyles Влияние на преобразование
AdjustToUniversal Синтаксический s анализ и при необходимости преобразует его в формат UTC следующим образом:

— Если s включает смещение часового пояса или не s содержит сведений о часовом поясе, но styles включает AssumeLocal флаг, метод анализирует строку, вызывает ToUniversalTime преобразование возвращаемого DateTime значения в формате UTC и задает Kind для свойства значение DateTimeKind.Utc.
— Если s указывает, что он представляет utc или s не содержит сведения о часовом поясе, но styles включает AssumeUniversal флаг, метод анализирует строку, не выполняет преобразование часового пояса для возвращаемого DateTime значения и задает Kind для свойства значение DateTimeKind.Utc.
— Во всех остальных случаях флаг не действует.
AllowInnerWhite Это значение игнорируется. Внутреннее пустое пространство всегда допускается в элементах sдаты и времени .
AllowLeadingWhite Это значение игнорируется. В начале пробела всегда допускается в элементах sдаты и времени .
AllowTrailingWhite Это значение игнорируется. Конечные пробелы всегда допускаются в элементах sдаты и времени .
AllowWhiteSpaces Указывает, что s могут содержать начальные, внутренние и конечные пробелы. Это поведение по умолчанию. Его нельзя переопределить путем предоставления более строгого DateTimeStyles значения перечисления, например None.
AssumeLocal Указывает, что при s отсутствии сведений о часовом поясе предполагается местное время. Если AdjustToUniversal флаг отсутствует, Kind свойству возвращаемого DateTime значения присваивается значение DateTimeKind.Local.
AssumeUniversal Указывает, что если s нет сведений о часовом поясе, предполагается, что в формате UTC. Если AdjustToUniversal флаг отсутствует, метод преобразует возвращаемое DateTime значение из UTC в местное время и задает для его Kind свойства значение DateTimeKind.Local.
None Хотя это значение является допустимым, это значение игнорируется.
RoundtripKind Для строк, содержащих сведения о часовом поясе, пытается предотвратить преобразование строки даты и времени в DateTime значение, представляющее местное время со значением свойства Kind DateTimeKind.Local. Как правило, такая строка создается путем вызова DateTime.ToString(String) метода и с помощью описателя стандартного формата o, r или u.

Возвращаемое значение и DateTime.Kind

Перегрузки DateTime.Parse возвращают DateTime значение, свойство которого Kind содержит сведения о часовом поясе. Это может указывать на то, что время:

  • Координированное универсальное время (System.DateTimeKind.Utc).
  • Время в местном часовом поясе (System.DateTimeKind.Local).
  • Время в неизвестном часовом поясе (xref:System.DateTimeKind.Unspecified?displayProperty=fullName>).

Как правило, Parse метод возвращает DateTime объект, свойство которого равно .DateTimeKind.UnspecifiedKind Однако метод Parse также может выполнять преобразование часового пояса и задавать значение Kind свойства по-разному в зависимости от значений s и styles параметров:

If Преобразование часового пояса Свойство Kind
s содержит сведения о часовом поясе. Дата и время преобразуются в время в местном часовом поясе. DateTimeKind.Local
sсодержит сведения о часовом поясе AdjustToUniversal и styles включает флаг. Дата и время преобразуются в utc. DateTimeKind.Utc
s содержит конструктор часового пояса Z или GMT и styles включает RoundtripKind флаг. Дата и время интерпретируются как UTC. DateTimeKind.Utc

В следующем примере строки даты, содержащие сведения о часовом поясе, преобразуются в время в местном часовом поясе:

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
open System

let dateStrings = 
    [ "2008-05-01T07:34:42-5:00"
      "2008-05-01 7:34:42Z"
      "Thu, 01 May 2008 07:34:42 GMT" ]

for dateString in dateStrings do
    let convertedDate = DateTime.Parse dateString
    printfn $"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 . В следующем примере показано, как RoundtripKind флаг влияет на операцию DateTime синтаксического анализа значений, преобразованных в строки с помощью описателя формата "o", "r" или "u".

   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.
let 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 formattedDate in formattedDates do
    printfn $"{formattedDate}"
    let roundtripDate = DateTime.Parse(formattedDate, null, DateTimeStyles.RoundtripKind)
    printfn $"   With RoundtripKind flag: {roundtripDate} {roundtripDate.Kind} time."

    let noRoundtripDate = DateTime.Parse(formattedDate, null, DateTimeStyles.None)
    printfn $"   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)

Преобразует строковое представление даты и времени в его DateTime эквивалент с помощью соглашений текущего языка и региональных параметров.

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

Строка, содержащая дату и время, которые нужно преобразовать. Дополнительные сведения см. в разделе Строка для анализа.

Возвращаемое значение

DateTime

Объект, эквивалентный дате и времени, содержащимся в параметре s.

Исключения

s имеет значение null.

Параметр s не содержит допустимое строковое представление даты и времени.

Примеры

В следующем примере анализируется строковое представление нескольких значений даты и времени:

  • Использование поставщика формата по умолчанию, который предоставляет соглашения о форматировании текущего языка и региональных параметров компьютера, используемого для создания примера выходных данных. Выходные данные этого примера отражают соглашения о форматировании языка и региональных параметров en-US.

  • Использование значения стиля по умолчанию, то есть AllowWhiteSpaces.

Он обрабатывает исключение, которое возникает FormatException при попытке метода проанализировать строковое представление даты и времени с помощью соглашений о форматировании других языков и региональных параметров. Здесь также показано, как успешно проанализировать значение даты и времени, которое не использует соглашения о форматировании текущего языка и региональных параметров.

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.
open System
open System.Globalization

[<EntryPoint>]
let 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
    let dateString = "2/16/2008 12:15:12 PM"
    try
        let dateValue = DateTime.Parse dateString
        printfn $"'{dateString}' converted to {dateValue}."
    with :? FormatException ->
        printfn $"Unable to convert '{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.
    let dateString = "16/02/2008 12:15:12"
    try
        let dateValue = DateTime.Parse dateString
        printfn $"'{dateString}' converted to {dateValue}."
    with :? 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
        let dateValue = DateTime.Parse(dateString, CultureInfo("fr-FR", false))
        printfn $"'{dateString}' converted to {dateValue}."
    with :? FormatException ->
        printfn $"Unable to convert '{dateString}'."

    // Parse string with date but no time component.
    let dateString = "2/16/2008"
    try
        let dateValue = DateTime.Parse dateString
        printfn $"'{dateString}' converted to {dateValue}."
    with :? FormatException ->
        printfn $"Unable to convert '{dateString}'."

    0

// 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.

Комментарии

Если s содержит сведения о часовом поясе, этот метод возвращает DateTime значение, свойство которого Kind является DateTimeKind.Local и преобразует дату и время в s местное время. В противном случае он не выполняет преобразование часового пояса и возвращает DateTime значение, свойство которого Kind равно DateTimeKind.Unspecified.

Эта перегрузка пытается проанализировать s с помощью соглашений о форматировании текущего языка и региональных параметров. Текущий язык и региональные параметры указываются свойством CurrentCulture . Чтобы проанализировать строку с помощью соглашений о форматировании определенного языка и региональных параметров, вызовите Parse(String, IFormatProvider) перегрузки.Parse(String, IFormatProvider, DateTimeStyles)

Эта перегрузка пытается проанализировать s с помощью DateTimeStyles.AllowWhiteSpaces стиля.

См. также раздел

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

Parse(ReadOnlySpan<Char>, IFormatProvider)

Анализирует диапазон символов в значение.

public:
 static DateTime Parse(ReadOnlySpan<char> s, IFormatProvider ^ provider) = ISpanParsable<DateTime>::Parse;
public static DateTime Parse (ReadOnlySpan<char> s, IFormatProvider? provider);
static member Parse : ReadOnlySpan<char> * IFormatProvider -> DateTime
Public Shared Function Parse (s As ReadOnlySpan(Of Char), provider As IFormatProvider) As DateTime

Параметры

provider
IFormatProvider

Возвращаемое значение

DateTime

Результат синтаксического анализа s.

Реализации

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

Parse(String, IFormatProvider)

Преобразует заданное строковое представление даты и времени в его эквивалент DateTime, используя сведения о форматировании, связанные с языком и региональными параметрами.

public:
 static DateTime Parse(System::String ^ s, IFormatProvider ^ provider);
public:
 static DateTime Parse(System::String ^ s, IFormatProvider ^ provider) = IParsable<DateTime>::Parse;
public static DateTime Parse (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

Строка, содержащая дату и время, которые нужно преобразовать. Дополнительные сведения см. в разделе Строка для анализа.

provider
IFormatProvider

Объект, предоставляющий сведения о формате параметра s для определенного языка и региональных параметров. См. раздел Анализ и соглашения для языка и региональных параметров

Возвращаемое значение

DateTime

Объект, эквивалентный дате и времени, которые содержатся в параметре s, определяемом параметром provider.

Реализации

Исключения

s имеет значение null.

Параметр s не содержит допустимое строковое представление даты и времени.

Примеры

В следующем примере выполняется синтаксический анализ массива строк дат с помощью соглашений языков en-US, fr-FR и de-DE. В нем показано, что строковые представления одной даты можно интерпретировать по-разному в разных языках и региональных параметрах.

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.
open System
open System.Globalization

// Define cultures to be used to parse dates.
let cultures = 
    [ CultureInfo.CreateSpecificCulture "en-US"
      CultureInfo.CreateSpecificCulture "fr-FR"
      CultureInfo.CreateSpecificCulture "de-DE" ]

// Define string representations of a date to be parsed.
let dateStrings = 
    [ "01/10/2009 7:34 PM"
      "10.01.2009 19:34"
      "10-1-2009 19:34" ]

// Parse dates using each culture.
for culture in cultures do
    printfn $"Attempted conversions using {culture.Name} culture."
    for dateString in dateStrings do
        try
            let dateValue = DateTime.Parse(dateString, culture)
            printfn $"""   Converted '{dateString}' to {dateValue.ToString("f", culture)}."""
        with :? FormatException ->
            printfn $"   Unable to convert '{dateString}' for culture {culture.Name}." 
    printfn ""


// 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.

Комментарии

Если s содержит сведения о часовом поясе, этот метод возвращает DateTime значение, свойство которого Kind является DateTimeKind.Local и преобразует дату и время в s местное время. В противном случае он не выполняет преобразование часового пояса и возвращает DateTime значение, свойство которого Kind равно DateTimeKind.Unspecified.

Эта перегрузка пытается проанализировать s с помощью DateTimeStyles.AllowWhiteSpaces стиля.

См. также раздел

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

Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles)

Преобразует область памяти, которая содержит строковое представление даты и времени, в ее эквивалент DateTime, используя сведения о форматировании, связанные с языком и региональными параметрами, а также стиль форматирования.

public static DateTime Parse (ReadOnlySpan<char> s, IFormatProvider? provider = default, System.Globalization.DateTimeStyles styles = System.Globalization.DateTimeStyles.None);
public static DateTime Parse (ReadOnlySpan<char> s, IFormatProvider provider = default, 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 = Nothing, Optional styles As DateTimeStyles = System.Globalization.DateTimeStyles.None) As DateTime

Параметры

s
ReadOnlySpan<Char>

Область памяти, которая содержит строку для анализа. Дополнительные сведения см. в разделе Строка для анализа.

provider
IFormatProvider

Объект, предоставляющий сведения о формате параметра s для определенного языка и региональных параметров. См. раздел Анализ и соглашения для языка и региональных параметров

styles
DateTimeStyles

Побитовая комбинация значений перечисления, показывающая элементы стиля, которые могут присутствовать в параметре s, чтобы операция анализа прошла успешно. Данная комбинация определяет способ интерпретации анализируемых данных с учетом текущего часового пояса или текущей даты. Обычно указывается значение None.

Возвращаемое значение

DateTime

Объект, эквивалентный дате и времени, которые содержатся в параметре s, определяемом параметрами provider и styles.

Исключения

s не содержит допустимое строковое представление даты и времени.

Параметр styles содержит недопустимое сочетание значений DateTimeStyles. Например, и AssumeLocal, и AssumeUniversal.

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

Parse(String, IFormatProvider, DateTimeStyles)

Преобразует строковое представление даты и времени в его эквивалент DateTime, используя сведения о форматировании, связанные с языком и региональными параметрами, а также стиль форматирования.

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);
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

Строка, содержащая дату и время, которые нужно преобразовать. Дополнительные сведения см. в разделе Строка для анализа.

provider
IFormatProvider

Объект, который предоставляет сведения о форматировании параметра s в зависимости от языка и региональных параметров. См. раздел Анализ и соглашения для языка и региональных параметров

styles
DateTimeStyles

Побитовая комбинация значений перечисления, показывающая элементы стиля, которые могут присутствовать в параметре s, чтобы операция анализа прошла успешно. Данная комбинация определяет способ интерпретации анализируемых данных с учетом текущего часового пояса или текущей даты. Обычно указывается значение None.

Возвращаемое значение

DateTime

Объект, эквивалентный дате и времени, которые содержатся в параметре s, определяемом параметрами provider и styles.

Исключения

s имеет значение null.

s не содержит допустимое строковое представление даты и времени.

Параметр styles содержит недопустимое сочетание значений DateTimeStyles. Например, значения AssumeLocal и AssumeUniversal.

Примеры

В следующем примере демонстрируется Parse(String, IFormatProvider, DateTimeStyles) метод и отображается значение Kind свойства результирующего DateTime значения.

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.
open System
open System.Globalization

[<EntryPoint>]
let main _ =
    // Parse a date and time with no styles.
    let dateString = "03/01/2009 10:00 AM"
    let culture = CultureInfo.CreateSpecificCulture "en-US"
    let styles = DateTimeStyles.None
    try
        let result = DateTime.Parse(dateString, culture, styles)
        printfn $"{dateString} converted to {result} {result.Kind}."
    with :? FormatException ->
        printfn $"Unable to convert {dateString} to a date and time."

    // Parse the same date and time with the AssumeLocal style.
    let styles = DateTimeStyles.AssumeLocal
    try
        let result = DateTime.Parse(dateString, culture, styles)
        printfn $"{dateString} converted to {result} {result.Kind}."
    with :? FormatException ->
        printfn $"Unable to convert {dateString} to a date and time."

    // 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.
    let dateString = "2009/03/01T10:00:00-5:00"
    let styles = DateTimeStyles.AssumeLocal
    try
        let result = DateTime.Parse(dateString, culture, styles)
        printfn $"{dateString} converted to {result} {result.Kind}."
    with :? FormatException ->
        printfn $"Unable to convert {dateString} to a date and time."

    // Attempt to convert a string in improper ISO 8601 format.
    let dateString = "03/01/2009T10:00:00-5:00"
    try
        let result = DateTime.Parse(dateString, culture, styles)
        printfn $"{dateString} converted to {result} {result.Kind}."
    with :? FormatException ->
        printfn $"Unable to convert {dateString} to a date and time."

    // Assume a date and time string formatted for the fr-FR culture is the local
    // time and convert it to UTC.
    let dateString = "2008-03-01 10:00"
    let culture = CultureInfo.CreateSpecificCulture "fr-FR"
    let styles = DateTimeStyles.AdjustToUniversal ||| DateTimeStyles.AssumeLocal
    try
        let result = DateTime.Parse(dateString, culture, styles)
        printfn $"{dateString} converted to {result} {result.Kind}."
    with :? FormatException ->
        printfn $"Unable to convert {dateString} to a date and time."

    0

// 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.

Комментарии

Эта перегрузка метода преобразует дату и время и s задает Kind свойство возвращаемого DateTime значения следующим образом:

If Преобразование часовых поясов Свойство Kind
s не содержит сведений о часовом поясе. Нет. DateTimeKind.Unspecified
s содержит сведения о часовом поясе. Время в местном часовом поясе DateTimeKind.Local
sсодержит сведения о часовом поясе DateTimeStyles.AdjustToUniversal и styles включает флаг. Координированное универсальное время (UTC) DateTimeKind.Utc
s содержит конструктор часовых поясов Z или GMT и styles включает в DateTimeStyles.RoundtripKindсебя . Нет. DateTimeKind.Utc

См. также раздел

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