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. Также требует, <Дата > и <время > элементы строкового представления даты и времени отображаются в порядке, указанном 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. Дополнительные сведения о допустимых кодах форматирования, см. в разделе Standard Date и Time Format Strings или Custom Date и Time Format Strings.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.

Если providernull, 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 по» не может быть проанализирована успешно при 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 из «мм/дд/yyyyhh: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 флаги, который возвращает DateTime которого 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.

Член DateTimeStylesDateTimeStyles 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.

Если providernull, 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 флаги, который возвращает DateTime которого 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 параметр состоит из одного или нескольких настраиваемых описателей формата из пользовательские строки даты и времени формат таблицы или один стандартный описатель формата, который определяет предварительно определенному шаблону, из Standard Date и Time Format Strings таблицы.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.

Член DateTimeStylesDateTimeStyles 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.

Если providernull, 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.

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

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