Поделиться через


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 текущего календаря и региональных параметров или текущего календаря указанного языка и региональных параметров (если используется перегрузка с аргументом provider не null).

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

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

  • Строка с временем, но без компонента даты. Метод предполагает текущую дату, если вы не вызываете перегрузку 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:000.000000Z" "2008-11-01T19:35:000000000-07:000"

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

    "Sat, 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 г. отмечено начало эпохи Reiwa в 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.

Важный

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

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

Если Преобразование часового пояса Свойство Kind
s содержит сведения о часовом поясе. Дата и время преобразуются в время в местном часовом поясе. DateTimeKind.Local
s содержит сведения о часовом поясе, а styles включает флаг AdjustToUniversal. Дата и время преобразуются в согласованное универсальное время (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 не содержит допустимое строковое представление даты и времени.

Примеры

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

  • Использование поставщика формата по умолчанию, предоставляющего соглашения о форматировании текущего языка и региональных параметров компьютера, используемого для создания примера выходных данных. Выходные данные из этого примера отражают соглашения о форматировании языка и региональных параметров 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 не содержит допустимое строковое представление даты и времени.

Примеры

В следующем примере выполняется анализ массива строк даты с помощью соглашений 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 не содержит допустимое строковое представление даты и времени.

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 следующим образом:

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

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

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