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; Например:

    "Sat, 01 Nov 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 этой статье.

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

Все Parse перегрузки игнорируют начальные, внутренние или конечные пробелы во входной строке (которая представлена s в следующей таблице). Дата и время могут быть заключены в скобки с помощью пары начальных и конечных символов NUMBER SIGN ("#", 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 значения и задает свойству значение KindDateTimeKind.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 содержит сведения о часовом поясе. Это может указывать на то, что время:

Как правило, метод возвращает объект , ParseDateTime свойство которого Kind равно DateTimeKind.Unspecified. 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.cs
Исходный код:
DateTime.cs
Исходный код:
DateTime.cs

Преобразует строковое представление даты и времени в его 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

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

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

Объект, эквивалентный дате и времени, содержащимся в параметре 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)

Исходный код:
DateTime.cs
Исходный код:
DateTime.cs
Исходный код:
DateTime.cs

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

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

Параметры

s
ReadOnlySpan<Char>

Диапазон символов для анализа.

provider
IFormatProvider

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

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

Результат анализа s.

Реализации

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

Parse(String, IFormatProvider)

Исходный код:
DateTime.cs
Исходный код:
DateTime.cs
Исходный код:
DateTime.cs

Преобразует заданное строковое представление даты и времени в его эквивалент 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 для определенного языка и региональных параметров. См. раздел Анализ и соглашения для языка и региональных параметров

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

Объект, эквивалентный дате и времени, которые содержатся в параметре 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.cs
Исходный код:
DateTime.cs
Исходный код:
DateTime.cs

Преобразует область памяти, которая содержит строковое представление даты и времени, в ее эквивалент 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.

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

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

Исключения

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

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

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

Parse(String, IFormatProvider, DateTimeStyles)

Исходный код:
DateTime.cs
Исходный код:
DateTime.cs
Исходный код:
DateTime.cs

Преобразует строковое представление даты и времени в его эквивалент 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.

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

Объект, эквивалентный дате и времени, которые содержатся в параметре 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

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

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