DateTime.ParseExact DateTime.ParseExact DateTime.ParseExact DateTime.ParseExact Method

Определение

Преобразует заданное строковое представление даты и времени в его эквивалент DateTime.Converts the specified string representation of a date and time to its DateTime equivalent. Формат строкового представления должен полностью соответствовать заданному формату. В противном случае возникает исключение.The format of the string representation must match a specified format exactly or an exception is thrown.

Перегрузки

ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider)

Преобразует заданное строковое представление даты и времени в его эквивалент DateTime, используя указанные сведения о форматировании, связанные с языком и региональными параметрами.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format and culture-specific format information. Формат строкового представления должен полностью соответствовать заданному формату.The format of the string representation must match the specified format exactly.

ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles)
ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles)
ParseExact(String, String, IFormatProvider, DateTimeStyles) ParseExact(String, String, IFormatProvider, DateTimeStyles) ParseExact(String, String, IFormatProvider, DateTimeStyles) ParseExact(String, String, IFormatProvider, DateTimeStyles)

Преобразует заданное строковое представление даты и времени в его эквивалент DateTime, используя заданный формат, указанные сведения о форматировании, связанные с языком и региональными параметрами, а также стиль.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. Формат строкового представления должен полностью соответствовать заданному формату. В противном случае возникает исключение.The format of the string representation must match the specified format exactly or an exception is thrown.

ParseExact(String, String[], IFormatProvider, DateTimeStyles) ParseExact(String, String[], IFormatProvider, DateTimeStyles) ParseExact(String, String[], IFormatProvider, DateTimeStyles) ParseExact(String, String[], IFormatProvider, DateTimeStyles)

Преобразует заданное строковое представление даты и времени в его эквивалент DateTime, используя заданный массив форматов, указанные сведения о форматировании, связанные с языком и региональными параметрами, и стиль форматирования.Converts the specified string representation of a date and time to its DateTime equivalent using the specified array of formats, culture-specific format information, and style. Формат строкового представления должен полностью соответствовать по крайней мере одному из заданных форматов. В противном случае возникает исключение.The format of the string representation must match at least one of the specified formats exactly or an exception is thrown.

Комментарии

Важно!

Эры в японских календарях основаны на периодах царствования императоров. Таким образом, ожидается наступление новой эры.Eras in the Japanese calendars are based on the emperor's reign and are therefore expected to change. Например, 1 мая 2019 года в JapaneseCalendar и JapaneseLunisolarCalendar отмечено как начало эры Рэйва.For example, May 1, 2019 marked the beginning of the Reiwa era in the JapaneseCalendar and JapaneseLunisolarCalendar. Изменение эры затрагивает все приложения, использующие эти календари.Such a change of era affects all applications that use these calendars. Из раздела Обработка новой эры по японскому календарю в .NET можно почерпнуть дополнительные сведения, а также узнать, затронуты ли ваши приложения этим изменением.See Handling a new era in the Japanese calendar in .NET for more information and to determine whether your applications are affected. Сведения о тестировании приложений в системах Windows для обеспечения их готовности к работе в новой эре см. в разделе Подготовка приложения к изменению эры по японскому календарю.See Prepare your application for the Japanese era change for information on testing your applications on Windows systems to ensure their readiness for the era change. Сведения о функциях в .NET, которые поддерживают календарь с несколькими эрами, и рекомендации по использованию таких календарей см. в разделе о работе с эрами.See Working with eras for features in .NET that support calendars with multiple eras and for best practices when working with calendars that support multiple eras.

ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider)

Преобразует заданное строковое представление даты и времени в его эквивалент DateTime, используя указанные сведения о форматировании, связанные с языком и региональными параметрами.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format and culture-specific format information. Формат строкового представления должен полностью соответствовать заданному формату.The format of the string representation must match the specified format exactly.

public:
 static DateTime ParseExact(System::String ^ s, System::String ^ format, IFormatProvider ^ provider);
public static DateTime ParseExact (string s, string format, IFormatProvider provider);
static member ParseExact : string * string * IFormatProvider -> DateTime
Public Shared Function ParseExact (s As String, format As String, provider As IFormatProvider) As DateTime

Параметры

s
String String String String

Строка, содержащая дату и время, которые нужно преобразовать.A string that contains a date and time to convert.

format
String String String String

Описатель формата, задающий требуемый формат s.A format specifier that defines the required format of s. Дополнительные сведения см. в разделе "Примечания".For more information, see the Remarks section.

provider
IFormatProvider IFormatProvider IFormatProvider IFormatProvider

Объект, предоставляющий сведения о формате параметра s для определенного языка и региональных параметров.An object that supplies culture-specific format information about s.

Возвраты

Объект, эквивалентный дате и времени, которые содержатся в параметре s, определяемом параметрами format и provider.An object that is equivalent to the date and time contained in s, as specified by format and provider.

Исключения

Значение параметра s или formatnull.s or format is null.

s или format является пустой строкой.s or format is an empty string.

-или--or- Строка s не содержит дату и время, соответствующие формату, заданному в параметре format.s does not contain a date and time that corresponds to the pattern specified in format.

-или--or- Компонент часов и обозначение AM/PM в s не соответствуют друг другу.The hour component and the AM/PM designator in s do not agree.

Примеры

В следующем примере демонстрируется использование метода ParseExact.The following example demonstrates the ParseExact method.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string dateString, format;  
      DateTime result;
      CultureInfo provider = CultureInfo.InvariantCulture;

      // Parse date-only value with invariant culture.
      dateString = "06/15/2008";
      format = "d";
      try {
         result = DateTime.ParseExact(dateString, format, provider);
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
      }
      catch (FormatException) {
         Console.WriteLine("{0} is not in the correct format.", dateString);
      } 

      // Parse date-only value without leading zero in month using "d" format.
      // Should throw a FormatException because standard short date pattern of 
      // invariant culture requires two-digit month.
      dateString = "6/15/2008";
      try {
         result = DateTime.ParseExact(dateString, format, provider);
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
      }
      catch (FormatException) {
         Console.WriteLine("{0} is not in the correct format.", dateString);
      }
      
      // Parse date and time with custom specifier.
      dateString = "Sun 15 Jun 2008 8:30 AM -06:00";
      format = "ddd dd MMM yyyy h:mm tt zzz";
      try {
         result = DateTime.ParseExact(dateString, format, provider);
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
      }
      catch (FormatException) {
         Console.WriteLine("{0} is not in the correct format.", dateString);
      }
      
      // Parse date and time with offset but without offset's minutes.
      // Should throw a FormatException because "zzz" specifier requires leading  
      // zero in hours.
      dateString = "Sun 15 Jun 2008 8:30 AM -06";
      try {
         result = DateTime.ParseExact(dateString, format, provider);
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
      }   
      catch (FormatException) {
         Console.WriteLine("{0} is not in the correct format.", dateString);
      } 
      
      dateString = "15/06/2008 08:30";
      format = "g";
      provider = new CultureInfo("fr-FR");
      try {
         result = DateTime.ParseExact(dateString, format, provider);
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
      }   
      catch (FormatException) {
         Console.WriteLine("{0} is not in the correct format.", dateString);
      } 

      // Parse a date that includes seconds and milliseconds
      // by using the French (France) and invariant cultures.
      dateString = "18/08/2015 06:30:15.006542";
      format = "dd/MM/yyyy HH:mm:ss.ffffff";
      try {
         result = DateTime.ParseExact(dateString, format, provider);
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
      }
      catch (FormatException) {
         Console.WriteLine("{0} is not in the correct format.", dateString);
      }
   }
}
// The example displays the following output:
//       06/15/2008 converts to 6/15/2008 12:00:00 AM.
//       6/15/2008 is not in the correct format.
//       Sun 15 Jun 2008 8:30 AM -06:00 converts to 6/15/2008 7:30:00 AM.
//       Sun 15 Jun 2008 8:30 AM -06 is not in the correct format.
//       15/06/2008 08:30 converts to 6/15/2008 8:30:00 AM.
//       18/08/2015 06:30:15.006542 converts to 8/18/2015 6:30:15 AM.
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim dateString, format As String  
      Dim result As Date
      Dim provider As CultureInfo = CultureInfo.InvariantCulture

      ' Parse date-only value with invariant culture.
      dateString = "06/15/2008"
      format = "d"
      Try
         result = Date.ParseExact(dateString, format, provider)
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
      Catch e As FormatException
         Console.WriteLine("{0} is not in the correct format.", dateString)
      End Try 

      ' Parse date-only value without leading zero in month using "d" format.
      ' Should throw a FormatException because standard short date pattern of 
      ' invariant culture requires two-digit month.
      dateString = "6/15/2008"
      Try
         result = Date.ParseExact(dateString, format, provider)
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
      Catch e As FormatException
         Console.WriteLine("{0} is not in the correct format.", dateString)
      End Try 
      
      ' Parse date and time with custom specifier.
      dateString = "Sun 15 Jun 2008 8:30 AM -06:00"
      format = "ddd dd MMM yyyy h:mm tt zzz"        
      Try
         result = Date.ParseExact(dateString, format, provider)
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
      Catch e As FormatException
         Console.WriteLine("{0} is not in the correct format.", dateString)
      End Try 
      
      ' Parse date and time with offset but without offset's minutes.
      ' Should throw a FormatException because "zzz" specifier requires leading  
      ' zero in hours.
      dateString = "Sun 15 Jun 2008 8:30 AM -06"
      Try
         result = Date.ParseExact(dateString, format, provider)
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
      Catch e As FormatException
         Console.WriteLine("{0} is not in the correct format.", dateString)
      End Try 
      
      ' Parse a date string using the French (France) culture.
      dateString = "15/06/2008 08:30"
      format = "g"
      provider = New CultureInfo("fr-FR")
      Try
         result = Date.ParseExact(dateString, format, provider)
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
      Catch e As FormatException
         Console.WriteLine("{0} is not in the correct format.", dateString)
      End Try

      ' Parse a date that includes seconds and milliseconds
      ' by using the French (France) and invariant cultures.
      dateString = "18/08/2015 06:30:15.006542"
      format = "dd/MM/yyyy HH:mm:ss.ffffff"
      Try
         result = Date.ParseExact(dateString, format, provider)
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
      Catch e As FormatException
         Console.WriteLine("{0} is not in the correct format.", dateString)
      End Try
   End Sub
End Module
' The example displays the following output:
'       06/15/2008 converts to 6/15/2008 12:00:00 AM.
'       6/15/2008 is not in the correct format.
'       Sun 15 Jun 2008 8:30 AM -06:00 converts to 6/15/2008 7:30:00 AM.
'       Sun 15 Jun 2008 8:30 AM -06 is not in the correct format.
'       15/06/2008 08:30 converts to 6/15/2008 8:30:00 AM.
'       18/08/2015 06:30:15.006542 converts to 8/18/2015 6:30:15 AM.

Комментарии

Метод DateTime.ParseExact(String, String, IFormatProvider) анализирует строковое представление даты, которое должно быть в формате, определенном параметром format.The DateTime.ParseExact(String, String, IFormatProvider) method parses the string representation of a date, which must be in the format defined by the format parameter. Также требуется, чтобы элементы <Date > и @no__t-> 1Time в строковом представлении даты и времени отображались в порядке, указанном format, а s не имеют пробелов, Кроме разрешенного format.It also requires that the <Date> and <Time> elements of the string representation of a date and time appear in the order specified by format, and that s have no white space other than that permitted by format. Если format определяет дату без элемента времени и операция синтаксического анализа выполняется успешно, то полученное значение DateTime будет иметь время полуночи (00:00:00).If format defines a date with no time element and the parse operation succeeds, the resulting DateTime value has a time of midnight (00:00:00). Если format определяет время без элемента даты и операция синтаксического анализа выполняется успешно, результирующее DateTime имеет дату DateTime.Now.Date.If format defines a time with no date element and the parse operation succeeds, the resulting DateTime value has a date of DateTime.Now.Date.

Если s не представляет время в определенном часовом поясе и операция синтаксического анализа выполняется, то свойство Kind возвращаемого значения DateTime равно DateTimeKind.Unspecified.If s does not represent a time in a particular time zone and the parse operation succeeds, the Kind property of the returned DateTime value is DateTimeKind.Unspecified. Если s представляет время в определенном часовом поясе, а format допускает присутствие сведений о часовом поясе (например, если format равна стандартным описателям формата "o", "r" или "u") или содержит описатели настраиваемого формата "z", "ZZ" или "zzz" ), свойство Kind возвращаемого значения DateTime равно DateTimeKind.Local.If s does represent the time in a particular time zone and format allows time zone information to be present (for example, if format is equal to the "o", "r", or "u" standard format specifiers, or if it contains the "z", "zz", or "zzz" custom format specifiers), the Kind property of the returned DateTime value is DateTimeKind.Local.

Параметр format представляет собой строку, содержащую либо один стандартный описатель формата, либо один или несколько настраиваемых описателей формата, которые определяют требуемый формат s.The format parameter is a string that contains either a single standard format specifier, or one or more custom format specifiers that define the required format of s. Дополнительные сведения о допустимых кодах форматирования см. в разделе строки стандартных форматов даты и времени или строки настраиваемых форматов даты и времени.For details about valid formatting codes, see Standard Date and Time Format Strings or Custom Date and Time Format Strings.

Примечание

Если format является шаблоном пользовательского формата, который не включает разделители даты или времени (например, "ГГГГММДДЧЧмм"), используйте инвариантный язык и региональные параметры для параметра provider и самую широкую форму каждого настраиваемого описателя формата.If format is a custom format pattern that does not include date or time separators (such as "yyyyMMddHHmm"), use the invariant culture for the provider parameter and the widest form of each custom format specifier. Например, если вы хотите указать часы в шаблоне формата, укажите более широкую форму, "HH", а не более узкую форму "H".For example, if you want to specify hours in the format pattern, specify the wider form, "HH", instead of the narrower form, "H".

Конкретные символы и строки даты и времени (например, названия дней недели на определенном языке), используемые в s, определяются параметром provider, как и точный формат s, если format является строкой описателя стандартного формата.The particular date and time symbols and strings (such as names of the days of the week in a particular language) used in s are defined by the provider parameter, as is the precise format of s if format is a standard format specifier string. Параметр provider может быть любым из следующих:The provider parameter can be any of the following:

  • Объект CultureInfo, представляющий язык и региональные параметры, используемые для интерпретации s.A CultureInfo object that represents the culture used to interpret s. Объект DateTimeFormatInfo, возвращенный свойством DateTimeFormat, определяет символы и форматирование в s.The DateTimeFormatInfo object returned by its DateTimeFormat property defines the symbols and formatting in s.

  • Объект DateTimeFormatInfo, определяющий формат данных даты и времени.A DateTimeFormatInfo object that defines the format of date and time data.

  • Пользовательская реализация IFormatProvider, метод GetFormat, возвращает либо объект CultureInfo, либо объект DateTimeFormatInfo, предоставляющий сведения о форматировании.A custom IFormatProvider implementation whose GetFormat method returns either the CultureInfo object or the DateTimeFormatInfo object that provides formatting information.

Если provider равно null, то используется объект CultureInfo, соответствующий текущему языку и региональным параметрам.If provider is null, the CultureInfo object that corresponds to the current culture is used.

Примечания для тех, кто вызывает этот метод

В .NET Framework 4.NET Framework 4 метод ParseExact создает исключение FormatException, если анализируемая строка содержит компонент часа и указатель AM/PM, который не является соглашением.In the .NET Framework 4.NET Framework 4, the ParseExact method throws a FormatException if the string to be parsed contains an hour component and an AM/PM designator that are not in agreement. В .NET Framework 3,5.NET Framework 3.5 и более ранних версиях указатель AM/PM игнорируется.In the .NET Framework 3,5.NET Framework 3.5 and earlier versions, the AM/PM designator is ignored.

Дополнительно

ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles)

public static DateTime ParseExact (ReadOnlySpan<char> s, ReadOnlySpan<char> format, IFormatProvider provider, System.Globalization.DateTimeStyles style = System.Globalization.DateTimeStyles.None);
static member ParseExact : ReadOnlySpan<char> * ReadOnlySpan<char> * IFormatProvider * System.Globalization.DateTimeStyles -> DateTime
Public Shared Function ParseExact (s As ReadOnlySpan(Of Char), format As ReadOnlySpan(Of Char), provider As IFormatProvider, Optional style As DateTimeStyles = System.Globalization.DateTimeStyles.None) As DateTime

Параметры

format
ReadOnlySpan<Char>

Возвраты

ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles)

public static DateTime ParseExact (ReadOnlySpan<char> s, string[] formats, IFormatProvider provider, System.Globalization.DateTimeStyles style = System.Globalization.DateTimeStyles.None);
static member ParseExact : ReadOnlySpan<char> * string[] * IFormatProvider * System.Globalization.DateTimeStyles -> DateTime
Public Shared Function ParseExact (s As ReadOnlySpan(Of Char), formats As String(), provider As IFormatProvider, Optional style As DateTimeStyles = System.Globalization.DateTimeStyles.None) As DateTime

Параметры

formats
String[]

Возвраты

ParseExact(String, String, IFormatProvider, DateTimeStyles) ParseExact(String, String, IFormatProvider, DateTimeStyles) ParseExact(String, String, IFormatProvider, DateTimeStyles) ParseExact(String, String, IFormatProvider, DateTimeStyles)

Преобразует заданное строковое представление даты и времени в его эквивалент DateTime, используя заданный формат, указанные сведения о форматировании, связанные с языком и региональными параметрами, а также стиль.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. Формат строкового представления должен полностью соответствовать заданному формату. В противном случае возникает исключение.The format of the string representation must match the specified format exactly or an exception is thrown.

public:
 static DateTime ParseExact(System::String ^ s, System::String ^ format, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style);
public static DateTime ParseExact (string s, string format, IFormatProvider provider, System.Globalization.DateTimeStyles style);
static member ParseExact : string * string * IFormatProvider * System.Globalization.DateTimeStyles -> DateTime
Public Shared Function ParseExact (s As String, format As String, provider As IFormatProvider, style As DateTimeStyles) As DateTime

Параметры

s
String String String String

Строка, содержащая дату и время, которые нужно преобразовать.A string containing a date and time to convert.

format
String String String String

Описатель формата, задающий требуемый формат s.A format specifier that defines the required format of s. Дополнительные сведения см. в разделе "Примечания".For more information, see the Remarks section.

provider
IFormatProvider IFormatProvider IFormatProvider IFormatProvider

Объект, который предоставляет сведения о форматировании параметра s в зависимости от языка и региональных параметров.An object that supplies culture-specific formatting information about s.

style
DateTimeStyles DateTimeStyles DateTimeStyles DateTimeStyles

Побитовая комбинация значений перечисления, которая предоставляет дополнительную информацию о параметре s, об элементах стиля, которые могут присутствовать в параметре s, или о преобразовании из параметра s в значение DateTime.A bitwise combination of the enumeration values that provides additional information about s, about style elements that may be present in s, or about the conversion from s to a DateTime value. Обычно указывается значение None.A typical value to specify is None.

Возвраты

Объект, эквивалентный дате и времени, которые содержатся в параметре s, определяемом параметрами format, provider и style.An object that is equivalent to the date and time contained in s, as specified by format, provider, and style.

Исключения

Значение параметра s или formatnull.s or format is null.

s или format является пустой строкой.s or format is an empty string.

-или--or- Строка s не содержит дату и время, соответствующие формату, заданному в параметре format.s does not contain a date and time that corresponds to the pattern specified in format.

- или --or- Компонент часов и обозначение AM/PM в s не соответствуют друг другу.The hour component and the AM/PM designator in s do not agree.

style содержит недопустимое сочетание значений DateTimeStyles.style contains an invalid combination of DateTimeStyles values. Например, значения AssumeLocal и AssumeUniversal.For example, both AssumeLocal and AssumeUniversal.

Примеры

В следующем примере демонстрируется использование метода ParseExact(String, String, IFormatProvider).The following example demonstrates the ParseExact(String, String, IFormatProvider) method. Обратите внимание, что строка "5/01/2009 8:30 AM" не может быть успешно проанализирована, если параметр styles равен DateTimeStyles.None, так как в format не допускаются начальные пробелы.Note that the string " 5/01/2009 8:30 AM" cannot be parsed successfully when the styles parameter equals DateTimeStyles.None because leading spaces are not allowed by format. Кроме того, невозможно успешно выполнить синтаксический анализ строки "5/01/2009 09:00" с format из "MM/ДД/иииихх: mm", так как строка даты не предшествует номеру месяца с нулем в начале, так как format требует.Additionally, the string "5/01/2009 09:00" cannot be parsed successfully with a format of "MM/dd/yyyyhh:mm" because the date string does not precede the month number with a leading zero, as format requires.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      CultureInfo enUS = new CultureInfo("en-US"); 
      string dateString;
      DateTime dateValue;
      
      // Parse date with no style flags.
      dateString = " 5/01/2009 8:30 AM";
      try {
         dateValue = DateTime.ParseExact(dateString, "g", enUS, DateTimeStyles.None);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, 
                           dateValue.Kind);
      }                           
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }
      // Allow a leading space in the date string.
      try {
         dateValue = DateTime.ParseExact(dateString, "g", enUS, DateTimeStyles.AllowLeadingWhite);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, 
                           dateValue.Kind);
      }                           
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }
      
      // Use custom formats with M and MM.
      dateString = "5/01/2009 09:00";
      try {
         dateValue = DateTime.ParseExact(dateString, "M/dd/yyyy hh:mm", enUS, DateTimeStyles.None);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, 
                           dateValue.Kind);
      }                           
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }
      // Allow a leading space in the date string.
      try {
         dateValue = DateTime.ParseExact(dateString, "MM/dd/yyyy hh:mm", enUS, DateTimeStyles.None);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, 
                           dateValue.Kind);
      }                           
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }

      // Parse a string with time zone information.
      dateString = "05/01/2009 01:30:42 PM -05:00"; 
      try {
         dateValue = DateTime.ParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, DateTimeStyles.None);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, 
                           dateValue.Kind);
      }                           
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }
      // Allow a leading space in the date string.
      try {
         dateValue = DateTime.ParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, 
                                     DateTimeStyles.AdjustToUniversal);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, 
                           dateValue.Kind);
      }                           
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }
           
      // Parse a string representing UTC.
      dateString = "2008-06-11T16:11:20.0904778Z";
      try {
         dateValue = DateTime.ParseExact(dateString, "o", CultureInfo.InvariantCulture, 
                                     DateTimeStyles.None);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, 
                           dateValue.Kind);
      }                           
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }
      try {
         dateValue = DateTime.ParseExact(dateString, "o", CultureInfo.InvariantCulture, 
                                     DateTimeStyles.RoundtripKind);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, 
                           dateValue.Kind);
      }                           
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }
   }
}
// The example displays the following output:
//    ' 5/01/2009 8:30 AM' is not in an acceptable format.
//    Converted ' 5/01/2009 8:30 AM' to 5/1/2009 8:30:00 AM (Unspecified).
//    Converted '5/01/2009 09:00' to 5/1/2009 9:00:00 AM (Unspecified).
//    '5/01/2009 09:00' is not in an acceptable format.
//    Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 11:30:42 AM (Local).
//    Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 6:30:42 PM (Utc).
//    Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 9:11:20 AM (Local).
//    Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 4:11:20 PM (Utc).
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim enUS As New CultureInfo("en-US") 
      Dim dateString As String
      Dim dateValue As Date
      
      ' Parse date with no style flags.
      dateString = " 5/01/2009 8:30 AM"
      Try
         dateValue = Date.ParseExact(dateString, "g", enUS, DateTimeStyles.None)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try
      ' Allow a leading space in the date string.
      Try
         dateValue = Date.ParseExact(dateString, "g", enUS, DateTimeStyles.AllowLeadingWhite)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try
      
      ' Use custom formats with M and MM.
      dateString = "5/01/2009 09:00"
      Try
         dateValue = Date.ParseExact(dateString, "M/dd/yyyy hh:mm", enUS, DateTimeStyles.None)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try
      ' Allow a leading space in the date string.
      Try
         dateValue = Date.ParseExact(dateString, "MM/dd/yyyy hh:mm", enUS, DateTimeStyles.None)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try

      ' Parse a string with time zone information.
      dateString = "05/01/2009 01:30:42 PM -05:00" 
      Try
         dateValue = Date.ParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, DateTimeStyles.None)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try
      ' Allow a leading space in the date string.
      Try
         dateValue = Date.ParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, _
                                     DateTimeStyles.AdjustToUniversal)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try
           
      ' Parse a string representing UTC.
      dateString = "2008-06-11T16:11:20.0904778Z"
      Try
         dateValue = Date.ParseExact(dateString, "o", CultureInfo.InvariantCulture, _
                                     DateTimeStyles.None)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try
      Try
         dateValue = Date.ParseExact(dateString, "o", CultureInfo.InvariantCulture, _
                                     DateTimeStyles.RoundtripKind)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try
   End Sub
End Module
' The example displays the following output:
'    ' 5/01/2009 8:30 AM' is not in an acceptable format.
'    Converted ' 5/01/2009 8:30 AM' to 5/1/2009 8:30:00 AM (Unspecified).
'    Converted '5/01/2009 09:00' to 5/1/2009 9:00:00 AM (Unspecified).
'    '5/01/2009 09:00' is not in an acceptable format.
'    Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 11:30:42 AM (Local).
'    Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 6:30:42 PM (Utc).
'    Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 9:11:20 AM (Local).
'    Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 4:11:20 PM (Utc).

Комментарии

Метод DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) анализирует строковое представление даты, которое должно быть в формате, определенном параметром format.The DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) method parses the string representation of a date, which must be in a format defined by the format parameter. Также требуется, чтобы элементы даты и времени в s отображались в порядке, заданном format.It also requires that the date and time elements in s appear in the order specified by format. Если s не соответствует шаблону параметра format с любыми вариациями, определенными параметром style, метод создает исключение FormatException.If s does not match the pattern of the format parameter, with any variations defined by the style parameter, the method throws a FormatException. В отличие от этого, метод DateTime.Parse(String, IFormatProvider, DateTimeStyles) анализирует строковое представление даты в одном из форматов, распознаваемых объектом DateTimeFormatInfo поставщика формата.In contrast, the DateTime.Parse(String, IFormatProvider, DateTimeStyles) method parses the string representation of a date in any one of the formats recognized by the format provider's DateTimeFormatInfo object. Метод DateTime.Parse(String, IFormatProvider, DateTimeStyles) также позволяет элементам даты и времени в s отображаться в любом порядке.The DateTime.Parse(String, IFormatProvider, DateTimeStyles) method also allows the date and time elements in s to appear in any order.

Если параметр s содержит только время и дату, используется текущая дата, если параметр style не включает флаг DateTimeStyles.NoCurrentDateDefault. в этом случае используется дата по умолчанию (DateTime.Date.MinValue).If the s parameter contains only a time and no date, the current date is used unless the style parameter includes the DateTimeStyles.NoCurrentDateDefault flag, in which case the default date (DateTime.Date.MinValue) is used. Если параметр s содержит только дату и время, то используется полночь (00:00:00).If the s parameter contains only a date and no time, midnight (00:00:00) is used. Параметр style также определяет, может ли параметр s содержать начальные, внутренние или конечные символы пробела.The style parameter also determines whether the s parameter can contain leading, inner, or trailing white space characters.

Если s не содержит сведений о часовом поясе, свойство Kind возвращенного объекта DateTime имеет значение DateTimeKind.Unspecified.If s contains no time zone information, the Kind property of the returned DateTime object is DateTimeKind.Unspecified. Это поведение можно изменить с помощью флага DateTimeStyles.AssumeLocal, возвращающего DateTime значение, свойство Kind которого равно DateTimeKind.Local, или с помощью флагов DateTimeStyles.AssumeUniversal и DateTimeStyles.AdjustToUniversal, которые возвращают значение Kind, свойство которого равно DateTimeKind.Utc.This behavior can be changed by using the DateTimeStyles.AssumeLocal flag, which returns a DateTime value whose Kind property is DateTimeKind.Local, or by using the DateTimeStyles.AssumeUniversal and DateTimeStyles.AdjustToUniversal flags, which returns a DateTime value whose Kind property is DateTimeKind.Utc. Если s содержит сведения о часовом поясе, то при необходимости время преобразуется в местное время, а свойство Kind возвращаемого объекта DateTime устанавливается в DateTimeKind.Local.If s contains time zone information, the time is converted to local time, if necessary, and the Kind property of the returned DateTime object is set to DateTimeKind.Local. Это поведение можно изменить с помощью флага DateTimeStyles.RoundtripKind, чтобы не преобразовывать скоординированное координированное время (UTC) в местное время и установить свойство Kind в значение DateTimeKind.Utc.This behavior can be changed by using the DateTimeStyles.RoundtripKind flag to not convert Coordinated Universal Time (UTC) to a local time and to set the Kind property to DateTimeKind.Utc.

Параметр format определяет необходимый шаблон параметра s.The format parameter defines the required pattern of the s parameter. Он может состоять из одного или нескольких настраиваемых описателей формата в таблице строк настраиваемого формата даты и времени или одного стандартного описателя формата, который определяет стандартный шаблон из таблицы строк стандартного формата даты и времени .It can consist of either one or more custom format specifiers from the Custom Date and Time Format Strings table, or a single standard format specifier, which identifies a predefined pattern, from the Standard Date and Time Format Strings table.

Если в шаблоне пользовательского формата не используются разделители даты или времени, используйте инвариантный язык и региональные параметры для параметра provider и самую широкую форму описателя настраиваемого формата.If you do not use date or time separators in a custom format pattern, use the invariant culture for the provider parameter and the widest form of each custom format specifier. Например, если вы хотите указать часы в шаблоне, укажите более широкую форму, "HH", а не более узкую форму "H".For example, if you want to specify hours in the pattern, specify the wider form, "HH", instead of the narrower form, "H".

Примечание

Вместо того чтобы s соответствовать одному формату, чтобы операция синтаксического анализа была выполнена, можно вызвать метод DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) и указать несколько разрешенных форматов.Rather than requiring that s conform to a single format for the parse operation to succeed, you can call the DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) method and specify multiple permitted formats. Это делает операцию анализа более вероятной для выполнения.This makes the parse operation more likely to succeed.

Параметр styles включает один или несколько элементов перечисления DateTimeStyles, которые определяют, могут ли и где пробелы, не определенные format, отображаться в s, и управлять точным поведением операции синтаксического анализа.The styles parameter includes one or more members of the DateTimeStyles enumeration that determine whether and where white space not defined by format can appear in s and that control the precise behavior of the parse operation. В следующей таблице описано, как каждый элемент перечисления DateTimeStyles влияет на работу метода ParseExact(String, String, IFormatProvider, DateTimeStyles).The following table describes how each member of the DateTimeStyles enumeration affects the operation of the ParseExact(String, String, IFormatProvider, DateTimeStyles) method.

DateTimeStyles, элементDateTimeStyles member ОписаниеDescription
AdjustToUniversal Выполняет синтаксический анализ s и при необходимости преобразует его в время в формате UTC.Parses s and, if necessary, converts it to UTC. Если s включает смещение часового пояса или если s не содержит сведений о часовом поясе, но styles включает флаг DateTimeStyles.AssumeLocal, метод анализирует строку, вызывает ToUniversalTime для преобразования возвращенного значения DateTime в формат UTC и задает для свойства Kind значение DateTimeKind.Utc.If s includes a time zone offset, or if s contains no time zone information but styles includes the DateTimeStyles.AssumeLocal flag, the method parses the string, calls ToUniversalTime to convert the returned DateTime value to UTC, and sets the Kind property to DateTimeKind.Utc. Если s указывает, что он представляет время в формате UTC или если s не содержит сведений о часовом поясе, но styles включает флаг DateTimeStyles.AssumeUniversal, метод анализирует строку, не выполняет преобразование часового пояса для возвращенного значения DateTime и устанавливает свойство Kind. в DateTimeKind.Utc.If s indicates that it represents UTC, or if s does not contain time zone information but styles includes the DateTimeStyles.AssumeUniversal flag, the method parses the string, performs no time zone conversion on the returned DateTime value, and sets the Kind property to DateTimeKind.Utc. Во всех остальных случаях флаг не оказывает никакого влияния.In all other cases, the flag has no effect.
AllowInnerWhite Указывает, что пробелы, не определенные format, могут отображаться между любым отдельным элементом даты или времени.Specifies that white space not defined by format can appear between any individual date or time element.
AllowLeadingWhite Указывает, что пробелы, не определенные format, могут присутствовать в начале s.Specifies that white space not defined by format can appear at the beginning of s.
AllowTrailingWhite Указывает, что пробелы, не определенные format, могут присутствовать в конце s.Specifies that white space not defined by format can appear at the end of s.
AllowWhiteSpaces Указывает, что s может содержать начальные, внутренние и конечные пробелы, не определенные format.Specifies that s may contain leading, inner, and trailing white spaces not defined by format.
AssumeLocal Указывает, что если s не содержит сведений о часовом поясе, предполагается, что оно представляет местное время.Specifies that if s lacks any time zone information, it is assumed to represent a local time. Если флаг DateTimeStyles.AdjustToUniversal отсутствует, свойство Kind возвращаемого значения DateTime устанавливается в DateTimeKind.Local.Unless the DateTimeStyles.AdjustToUniversal flag is present, the Kind property of the returned DateTime value is set to DateTimeKind.Local.
AssumeUniversal Указывает, что если s не содержит сведений о часовом поясе, предполагается, что он представляет время в формате UTC.Specifies that if s lacks any time zone information, it is assumed to represent UTC. Если флаг DateTimeStyles.AdjustToUniversal отсутствует, метод преобразует возвращенное значение DateTime из UTC в местное время и устанавливает для его свойства Kind значение DateTimeKind.Local.Unless the DateTimeStyles.AdjustToUniversal flag is present, the method converts the returned DateTime value from UTC to local time and sets its Kind property to DateTimeKind.Local.
NoCurrentDateDefault Если s содержит сведения о времени без даты, то дата возвращаемого значения устанавливается равным DateTime.MinValue.Date.If s contains time without date information, the date of the return value is set to DateTime.MinValue.Date.
None Параметр s анализируется с использованием значений по умолчанию.The s parameter is parsed using default values. В format не допускаются пробелы, кроме тех, что есть.No white space other than that present in format is allowed. Если s не имеет компонента даты, то дата возвращаемого значения DateTime устанавливается равным 1/1/0001.If s lacks a date component, the date of the returned DateTime value is set to 1/1/0001. Если s не содержит сведений о часовом поясе, свойство Kind возвращенного объекта DateTime устанавливается в DateTimeKind.Unspecified.If s contains no time zone information, the Kind property of the returned DateTime object is set to DateTimeKind.Unspecified. Если сведения о часовом поясе находятся в s, время преобразуется в местное время, а свойство Kind возвращенного объекта DateTime устанавливается в DateTimeKind.Local.If time zone information is present in s, the time is converted to local time and the Kind property of the returned DateTime object is set to DateTimeKind.Local.
RoundtripKind Для строк, содержащих сведения о часовом поясе, пытается предотвратить преобразование в значение даты и времени DateTime со свойством Kind, равным DateTimeKind.Local.For strings that contain time zone information, tries to prevent the conversion to a DateTime value date and time with its Kind property set to DateTimeKind.Local. Этот флаг, в первую очередь, предотвращает преобразование времени в формате UTC в местное время.This flag primarily prevents the conversion of UTC times to local times.

Конкретные символы и строки даты и времени (например, названия дней недели на определенном языке), используемые в s, определяются параметром provider, как и точный формат s, если format является строкой описателя стандартного формата.The particular date and time symbols and strings (such as the names of the days of the week in a particular language) used in s are defined by the provider parameter, as is the precise format of s if format is a standard format specifier string. Параметр provider может быть любым из следующих:The provider parameter can be any of the following:

  • Объект CultureInfo, представляющий язык и региональные параметры, используемые для интерпретации s.A CultureInfo object that represents the culture used to interpret s. Объект DateTimeFormatInfo, возвращенный свойством DateTimeFormat, определяет символы и форматирование в s.The DateTimeFormatInfo object returned by its DateTimeFormat property defines the symbols and formatting in s.

  • Объект DateTimeFormatInfo, определяющий формат данных даты и времени.A DateTimeFormatInfo object that defines the format of date and time data.

  • Пользовательская реализация IFormatProvider, метод GetFormat, возвращает либо объект CultureInfo, либо объект DateTimeFormatInfo, предоставляющий сведения о форматировании.A custom IFormatProvider implementation whose GetFormat method returns either the CultureInfo object or the DateTimeFormatInfo object that provides formatting information.

Если provider равно null, то используется объект CultureInfo, соответствующий текущему языку и региональным параметрам.If provider is null, the CultureInfo object that corresponds to the current culture is used.

Примечания для тех, кто вызывает этот метод

В .NET Framework 4.NET Framework 4 метод ParseExact создает исключение FormatException, если анализируемая строка содержит компонент часа и указатель AM/PM, который не является соглашением.In the .NET Framework 4.NET Framework 4, the ParseExact method throws a FormatException if the string to be parsed contains an hour component and an AM/PM designator that are not in agreement. В .NET Framework 3,5.NET Framework 3.5 и более ранних версиях указатель AM/PM игнорируется.In the .NET Framework 3,5.NET Framework 3.5 and earlier versions, the AM/PM designator is ignored.

Дополнительно

ParseExact(String, String[], IFormatProvider, DateTimeStyles) ParseExact(String, String[], IFormatProvider, DateTimeStyles) ParseExact(String, String[], IFormatProvider, DateTimeStyles) ParseExact(String, String[], IFormatProvider, DateTimeStyles)

Преобразует заданное строковое представление даты и времени в его эквивалент DateTime, используя заданный массив форматов, указанные сведения о форматировании, связанные с языком и региональными параметрами, и стиль форматирования.Converts the specified string representation of a date and time to its DateTime equivalent using the specified array of formats, culture-specific format information, and style. Формат строкового представления должен полностью соответствовать по крайней мере одному из заданных форматов. В противном случае возникает исключение.The format of the string representation must match at least one of the specified formats exactly or an exception is thrown.

public:
 static DateTime ParseExact(System::String ^ s, cli::array <System::String ^> ^ formats, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style);
public static DateTime ParseExact (string s, string[] formats, IFormatProvider provider, System.Globalization.DateTimeStyles style);
static member ParseExact : string * string[] * IFormatProvider * System.Globalization.DateTimeStyles -> DateTime
Public Shared Function ParseExact (s As String, formats As String(), provider As IFormatProvider, style As DateTimeStyles) As DateTime

Параметры

s
String String String String

Строка, содержащая дату и время, которые нужно преобразовать.A string that contains a date and time to convert.

formats
String[]

Массив разрешенных форматов s.An array of allowable formats of s. Дополнительные сведения см. в разделе "Замечания".For more information, see the Remarks section.

provider
IFormatProvider IFormatProvider IFormatProvider IFormatProvider

Объект, предоставляющий сведения о формате параметра s для определенного языка и региональных параметров.An object that supplies culture-specific format information about s.

style
DateTimeStyles DateTimeStyles DateTimeStyles DateTimeStyles

Побитовая комбинация значений перечисления, которая показывает разрешенный формат параметра s.A bitwise combination of enumeration values that indicates the permitted format of s. Обычно указывается значение None.A typical value to specify is None.

Возвраты

Объект, эквивалентный дате и времени, которые содержатся в параметре s, определяемом параметрами formats, provider и style.An object that is equivalent to the date and time contained in s, as specified by formats, provider, and style.

Исключения

Значение параметра s или formatsnull.s or formats is null.

Параметр s равен пустой строке.s is an empty string.

- или --or- Элемент параметра formats является пустой строкой.an element of formats is an empty string.

- или --or- Строка s не содержит дату и время, соответствующие какому-либо элементу параметра formats.s does not contain a date and time that corresponds to any element of formats.

- или --or- Компонент часов и обозначение AM/PM в s не соответствуют друг другу.The hour component and the AM/PM designator in s do not agree.

style содержит недопустимое сочетание значений DateTimeStyles.style contains an invalid combination of DateTimeStyles values. Например, значения AssumeLocal и AssumeUniversal.For example, both AssumeLocal and AssumeUniversal.

Примеры

В следующем примере используется метод DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles), чтобы обеспечить возможность успешного анализа строки в ряде возможных форматов.The following example uses the DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) method to ensure that a string in a number of possible formats can be successfully parsed .

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string[] formats= {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt", 
                         "MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss", 
                         "M/d/yyyy hh:mm tt", "M/d/yyyy hh tt", 
                         "M/d/yyyy h:mm", "M/d/yyyy h:mm", 
                         "MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm",
                         "MM/d/yyyy HH:mm:ss.ffffff" };
      string[] dateStrings = {"5/1/2009 6:32 PM", "05/01/2009 6:32:05 PM", 
                              "5/1/2009 6:32:00", "05/01/2009 06:32", 
                              "05/01/2009 06:32:00 PM", "05/01/2009 06:32:00",
                              "08/28/2015 16:17:39.125", "08/28/2015 16:17:39.125000" };
      DateTime dateValue;
      
      foreach (string dateString in dateStrings)
      {
         try {
            dateValue = DateTime.ParseExact(dateString, formats, 
                                            new CultureInfo("en-US"), 
                                            DateTimeStyles.None);
            Console.WriteLine("Converted '{0}' to {1}.", dateString, dateValue);
         }
         catch (FormatException) {
            Console.WriteLine("Unable to convert '{0}' to a date.", dateString);
         }                                               
      }
   }
}
// The example displays the following output:
//       Converted '5/1/2009 6:32 PM' to 5/1/2009 6:32:00 PM.
//       Converted '05/01/2009 6:32:05 PM' to 5/1/2009 6:32:05 PM.
//       Converted '5/1/2009 6:32:00' to 5/1/2009 6:32:00 AM.
//       Converted '05/01/2009 06:32' to 5/1/2009 6:32:00 AM.
//       Converted '05/01/2009 06:32:00 PM' to 5/1/2009 6:32:00 PM.
//       Converted '05/01/2009 06:32:00' to 5/1/2009 6:32:00 AM.
//       Unable to convert '08/28/2015 16:17:39.125' to a date.
//       Converted '08/28/2015 16:17:39.125000' to 8/28/2015 4:17:39 PM.
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim formats() As String = {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt", _
                                 "MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss", _
                                 "M/d/yyyy hh:mm tt", "M/d/yyyy hh tt", _
                                 "M/d/yyyy h:mm", "M/d/yyyy h:mm", _
                                 "MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm",
                                 "MM/d/yyyy HH:mm:ss.ffffff" }
      Dim dateStrings() As String = {"5/1/2009 6:32 PM", "05/01/2009 6:32:05 PM", _
                                     "5/1/2009 6:32:00", "05/01/2009 06:32", _
                                     "05/01/2009 06:32:00 PM", "05/01/2009 06:32:00",
                                     "08/28/2015 16:17:39.125", "08/28/2015 16:17:39.125000" }

      Dim dateValue As DateTime
      
      For Each dateString As String In dateStrings
         Try
            dateValue = DateTime.ParseExact(dateString, formats, _
                                            New CultureInfo("en-US"), _
                                            DateTimeStyles.None)
            Console.WriteLine("Converted '{0}' to {1}.", dateString, dateValue)
         Catch e As FormatException
            Console.WriteLine("Unable to convert '{0}' to a date.", dateString)
         End Try                                               
      Next
   End Sub
End Module
' The example displays the following output:
'       Converted '5/1/2009 6:32 PM' to 5/1/2009 6:32:00 PM.
'       Converted '05/01/2009 6:32:05 PM' to 5/1/2009 6:32:05 PM.
'       Converted '5/1/2009 6:32:00' to 5/1/2009 6:32:00 AM.
'       Converted '05/01/2009 06:32' to 5/1/2009 6:32:00 AM.
'       Converted '05/01/2009 06:32:00 PM' to 5/1/2009 6:32:00 PM.
'       Converted '05/01/2009 06:32:00' to 5/1/2009 6:32:00 AM.
'       Unable to convert '08/28/2015 16:17:39.125' to a date.
'       Converted '08/28/2015 16:17:39.125000' to 8/28/2015 4:17:39 PM.

Комментарии

Метод DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) анализирует строковое представление даты, совпадающей с любым из шаблонов, назначенных параметру formats.The DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) method parses the string representation of a date that matches any one of the patterns assigned to the formats parameter. Если строка s не соответствует ни одному из этих шаблонов с вариациями, определенными параметром styles, метод создает исключение FormatException.If the string s does not match any one of these patterns with any of the variations defined by the styles parameter, the method throws a FormatException. Помимо сравнения s с несколькими шаблонами форматирования, а не с одним шаблоном форматирования, эта перегрузка ведет себя идентично методу DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles).Aside from comparing s to multiple formatting patterns, rather than to a single formatting pattern, this overload behaves identically to the DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) method.

Параметр s содержит дату и время для синтаксического анализа.The s parameter contains the date and time to parse. Если параметр s содержит только время и дату, используется текущая дата, если параметр style не включает флаг DateTimeStyles.NoCurrentDateDefault. в этом случае используется дата по умолчанию (DateTime.Date.MinValue).If the s parameter contains only a time and no date, the current date is used unless the style parameter includes the DateTimeStyles.NoCurrentDateDefault flag, in which case the default date (DateTime.Date.MinValue) is used. Если параметр s содержит только дату и время, то используется полночь (00:00:00).If the s parameter contains only a date and no time, midnight (00:00:00) is used. Параметр style также определяет, может ли параметр s содержать начальные, внутренние или конечные символы пробела, отличные от тех, которые разрешены одной из строк формата в formats.The style parameter also determines whether the s parameter can contain leading, inner, or trailing white space characters other than those permitted by one of the format strings in formats.

Если s не содержит сведений о часовом поясе, свойство Kind возвращенного объекта DateTime имеет значение DateTimeKind.Unspecified.If s contains no time zone information, the Kind property of the returned DateTime object is DateTimeKind.Unspecified. Это поведение можно изменить с помощью флага DateTimeStyles.AssumeLocal, возвращающего DateTime значение, свойство Kind которого равно DateTimeKind.Local, или с помощью флагов DateTimeStyles.AssumeUniversal и DateTimeStyles.AdjustToUniversal, которые возвращают значение Kind, свойство которого равно DateTimeKind.Utc.This behavior can be changed by using the DateTimeStyles.AssumeLocal flag, which returns a DateTime value whose Kind property is DateTimeKind.Local, or by using the DateTimeStyles.AssumeUniversal and DateTimeStyles.AdjustToUniversal flags, which returns a DateTime value whose Kind property is DateTimeKind.Utc. Если s содержит сведения о часовом поясе, то при необходимости время преобразуется в местное время, а свойство Kind возвращаемого объекта DateTime устанавливается в DateTimeKind.Local.If s contains time zone information, the time is converted to local time, if necessary, and the Kind property of the returned DateTime object is set to DateTimeKind.Local. Это поведение можно изменить с помощью флага DateTimeStyles.RoundtripKind, чтобы не преобразовывать время в формате UTC в местное время и установить свойство Kind в значение DateTimeKind.Utc.This behavior can be changed by using the DateTimeStyles.RoundtripKind flag to not convert Coordinated Universal Time (UTC) to a local time and set the Kind property to DateTimeKind.Utc.

Параметр formats содержит массив шаблонов, один из которых s должен точно соответствовать, если операция синтаксического анализа выполнена.The formats parameter contains an array of patterns, one of which s must match exactly if the parse operation is to succeed. Шаблоны в параметре formats состоят из одного или нескольких настраиваемых описателей формата в таблице строк настраиваемого формата даты и времени или одного стандартного описателя формата, который определяет предопределенный шаблон, от стандартных даты и времени. Формат таблицы строк .The patterns in the formats parameter consists of one or more custom format specifiers from the Custom Date and Time Format Strings table, or a single standard format specifier, which identifies a predefined pattern, from the Standard Date and Time Format Strings table.

Если в шаблоне пользовательского формата не используются разделители даты или времени, используйте инвариантный язык и региональные параметры для параметра provider и самую широкую форму описателя настраиваемого формата.If you do not use date or time separators in a custom format pattern, use the invariant culture for the provider parameter and the widest form of each custom format specifier. Например, если вы хотите указать часы в шаблоне, укажите более широкую форму, "HH", а не более узкую форму "H".For example, if you want to specify hours in the pattern, specify the wider form, "HH", instead of the narrower form, "H".

Параметр styles включает один или несколько элементов перечисления DateTimeStyles, которые определяют, могут ли и где пробелы, не определенные format, отображаться в s, и управлять точным поведением операции синтаксического анализа.The styles parameter includes one or more members of the DateTimeStyles enumeration that determine whether and where white space not defined by format can appear in s and that control the precise behavior of the parse operation. В следующей таблице описано, как каждый элемент перечисления DateTimeStyles влияет на работу метода ParseExact(String, String, IFormatProvider, DateTimeStyles).The following table describes how each member of the DateTimeStyles enumeration affects the operation of the ParseExact(String, String, IFormatProvider, DateTimeStyles) method.

DateTimeStyles, элементDateTimeStyles member ОписаниеDescription
AdjustToUniversal Выполняет синтаксический анализ s и при необходимости преобразует его в время в формате UTC.Parses s and, if necessary, converts it to UTC. Если s включает смещение часового пояса или если s не содержит сведений о часовом поясе, но styles включает флаг DateTimeStyles.AssumeLocal, метод анализирует строку, вызывает ToUniversalTime для преобразования возвращенного значения DateTime в формат UTC и задает для свойства Kind значение DateTimeKind.Utc.If s includes a time zone offset, or if s contains no time zone information but styles includes the DateTimeStyles.AssumeLocal flag, the method parses the string, calls ToUniversalTime to convert the returned DateTime value to UTC, and sets the Kind property to DateTimeKind.Utc. Если s указывает, что он представляет время в формате UTC или если s не содержит сведений о часовом поясе, но styles включает флаг DateTimeStyles.AssumeUniversal, метод анализирует строку, не выполняет преобразование часового пояса для возвращенного значения DateTime и устанавливает свойство Kind. в DateTimeKind.Utc.If s indicates that it represents UTC, or if s does not contain time zone information but styles includes the DateTimeStyles.AssumeUniversal flag, the method parses the string, performs no time zone conversion on the returned DateTime value, and sets the Kind property to DateTimeKind.Utc. Во всех остальных случаях флаг не оказывает никакого влияния.In all other cases, the flag has no effect.
AllowInnerWhite Указывает, что пробелы, не определенные format, могут отображаться между любым отдельным элементом даты или времени.Specifies that white space not defined by format can appear between any individual date or time element.
AllowLeadingWhite Указывает, что пробелы, не определенные format, могут присутствовать в начале s.Specifies that white space not defined by format can appear at the beginning of s.
AllowTrailingWhite Указывает, что пробелы, не определенные format, могут присутствовать в конце s.Specifies that white space not defined by format can appear at the end of s.
AllowWhiteSpaces Указывает, что s может содержать начальные, внутренние и конечные пробелы, не определенные format.Specifies that s may contain leading, inner, and trailing white spaces not defined by format.
AssumeLocal Указывает, что если s не содержит сведений о часовом поясе, предполагается, что оно представляет местное время.Specifies that if s lacks any time zone information, it is assumed to represent a local time. Если флаг DateTimeStyles.AdjustToUniversal отсутствует, свойство Kind возвращаемого значения DateTime устанавливается в DateTimeKind.Local.Unless the DateTimeStyles.AdjustToUniversal flag is present, the Kind property of the returned DateTime value is set to DateTimeKind.Local.
AssumeUniversal Указывает, что если s не содержит сведений о часовом поясе, предполагается, что он представляет время в формате UTC.Specifies that if s lacks any time zone information, it is assumed to represent UTC. Если флаг DateTimeStyles.AdjustToUniversal отсутствует, метод преобразует возвращенное значение DateTime из UTC в местное время и устанавливает для его свойства Kind значение DateTimeKind.Local.Unless the DateTimeStyles.AdjustToUniversal flag is present, the method converts the returned DateTime value from UTC to local time and sets its Kind property to DateTimeKind.Local.
NoCurrentDateDefault Если s содержит сведения о времени без даты, то дата возвращаемого значения устанавливается равным DateTime.MinValue.Date.If s contains time without date information, the date of the return value is set to DateTime.MinValue.Date.
None Параметр s анализируется с использованием значений по умолчанию.The s parameter is parsed using default values. В format не допускаются пробелы, кроме тех, что есть.No white space other than that present in format is allowed. Если s не имеет компонента даты, то дата возвращаемого значения DateTime устанавливается равным 1/1/0001.If s lacks a date component, the date of the returned DateTime value is set to 1/1/0001. Если s не содержит сведений о часовом поясе, свойство Kind возвращенного объекта DateTime устанавливается в DateTimeKind.Unspecified.If s contains no time zone information, the Kind property of the returned DateTime object is set to DateTimeKind.Unspecified. Если сведения о часовом поясе находятся в s, время преобразуется в местное время, а свойство Kind возвращенного объекта DateTime устанавливается в DateTimeKind.Local.If time zone information is present in s, the time is converted to local time and the Kind property of the returned DateTime object is set to DateTimeKind.Local.
RoundtripKind Для строк, содержащих сведения о часовом поясе, пытается предотвратить преобразование в дату и время со свойством Kind, равным DateTimeKind.Local.For strings that contain time zone information, tries to prevent the conversion to a date and time with its Kind property set to DateTimeKind.Local. Этот флаг, в первую очередь, предотвращает преобразование времени в формате UTC в местное время.This flag primarily prevents the conversion of UTC times to local times.

Конкретные символы и строки даты и времени (например, названия дней недели на определенном языке), используемые в s, определяются параметром provider, как и точный формат s, если format является строкой описателя стандартного формата.The particular date and time symbols and strings (such as the names of the days of the week in a particular language) used in s are defined by the provider parameter, as is the precise format of s if format is a standard format specifier string. Параметр provider может быть любым из следующих:The provider parameter can be any of the following:

  • Объект CultureInfo, представляющий язык и региональные параметры, используемые для интерпретации s.A CultureInfo object that represents the culture used to interpret s. Объект DateTimeFormatInfo, возвращенный свойством DateTimeFormat, определяет символы и форматирование в s.The DateTimeFormatInfo object returned by its DateTimeFormat property defines the symbols and formatting in s.

  • Объект DateTimeFormatInfo, определяющий формат данных даты и времени.A DateTimeFormatInfo object that defines the format of date and time data.

  • Пользовательская реализация IFormatProvider, метод GetFormat, возвращает либо объект CultureInfo, либо объект DateTimeFormatInfo, предоставляющий сведения о форматировании.A custom IFormatProvider implementation whose GetFormat method returns either the CultureInfo object or the DateTimeFormatInfo object that provides formatting information.

Если provider равно null, то используется объект CultureInfo, соответствующий текущему языку и региональным параметрам.If provider is null, the CultureInfo object that corresponds to the current culture is used.

Примечания для тех, кто вызывает этот метод

В .NET Framework 4.NET Framework 4 метод ParseExact создает исключение FormatException, если анализируемая строка содержит компонент часа и указатель AM/PM, который не является соглашением.In the .NET Framework 4.NET Framework 4, the ParseExact method throws a FormatException if the string to be parsed contains an hour component and an AM/PM designator that are not in agreement. В .NET Framework 3,5.NET Framework 3.5 и более ранних версиях указатель AM/PM игнорируется.In the .NET Framework 3,5.NET Framework 3.5 and earlier versions, the AM/PM designator is ignored.

Дополнительно

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