DateTime.ParseExact Methode

Definition

Konvertiert die angegebene Zeichenfolgendarstellung einer Datums- und Uhrzeitangabe in die DateTime-Entsprechung.Converts the specified string representation of a date and time to its DateTime equivalent. Das Format der Zeichenfolgendarstellung muss einem bestimmten Format genau entsprechen. Andernfalls wird eine Ausnahme ausgelöst.The format of the string representation must match a specified format exactly or an exception is thrown.

Überlädt

ParseExact(String, String, IFormatProvider)

Konvertiert die angegebene Zeichenfolgenentsprechung einer Datums- und Uhrzeitangabe unter Verwendung des angegebenen Formats und der angegebenen kulturabhängigen Formatierungsinformationen in die entsprechende DateTime.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format and culture-specific format information. Das Format der Zeichenfolgendarstellung muss dem angegebenen Format genau entsprechen.The format of the string representation must match the specified format exactly.

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

Konvertiert die angegebene Zeichenfolgenentsprechung einer Datums- und Uhrzeitangabe unter Verwendung der Angaben über Format, kulturabhängige Formatierungsinformationen und Stil in die entsprechende 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. Das Format der Zeichenfolgendarstellung muss dem angegebenen Format genau entsprechen. Andernfalls wird eine Ausnahme ausgelöst.The format of the string representation must match the specified format exactly or an exception is thrown.

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

Konvertiert die angegebene Zeichenfolgenentsprechung einer Datums- und Uhrzeitangabe unter Verwendung des angegebenen Formatarrays, der kulturspezifischen Formatierungsinformationen und des Stils in die DateTime-Entsprechung.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. Das Format der Zeichenfolgendarstellung muss mindestens einem der angegebenen Formate genau entsprechen. Andernfalls wird eine Ausnahme ausgelöst.The format of the string representation must match at least one of the specified formats exactly or an exception is thrown.

Hinweise

Wichtig

Die Zeitrechnung in japanischen Kalendern basiert auf den Regierungsperioden der Kaiser und wird sich daher erwartungsgemäß ändern.Eras in the Japanese calendars are based on the emperor's reign and are therefore expected to change. Beispiel: Der 1. Mai 2019 markiert den Beginn des Reiwa-Zeitabschnitts in den Kalendern des Typs JapaneseCalendar und JapaneseLunisolarCalendar.For example, May 1, 2019 marked the beginning of the Reiwa era in the JapaneseCalendar and JapaneseLunisolarCalendar. Eine derartige Änderung der Zeitabschnitte betrifft alle Anwendungen, die diese Kalender verwenden.Such a change of era affects all applications that use these calendars. Unter Handling a new era in the Japanese calendar in .NET (Umgang mit einem neuen Zeitabschnitt im japanischen Kalender in .NET) finden Sie weiter Informationen und wie Sie bestimmen können, ob Ihre Anwendungen ebenfalls betroffen sind.See Handling a new era in the Japanese calendar in .NET for more information and to determine whether your applications are affected. Unter Prepare your application for the Japanese era change (Vorbereiten Ihrer Anwendung für die Änderung des Zeitabschnitts im japanischen Kalender) finden Sie Informationen zum Testen Ihrer Anwendungen auf Windows-Systemen, um deren Bereitschaft für die Änderung im Zeitabschnitt sicherzustellen.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. Unter Arbeiten mit Zeiträumen finden Sie Informationen zu Funktionen in .NET, die Kalender mit mehreren Zeitabschnitten unterstützen, sowie bewährte Vorgehensweisen bei der Arbeit mit solchen Kalendern.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)

Konvertiert die angegebene Zeichenfolgenentsprechung einer Datums- und Uhrzeitangabe unter Verwendung des angegebenen Formats und der angegebenen kulturabhängigen Formatierungsinformationen in die entsprechende DateTime.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format and culture-specific format information. Das Format der Zeichenfolgendarstellung muss dem angegebenen Format genau entsprechen.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

Parameter

s
String

Eine Zeichenfolge, die eine zu konvertierende Datums- und Zeitangabe enthält.A string that contains a date and time to convert.

format
String

Ein Formatbezeichner, der das erforderliche Format von s definiert.A format specifier that defines the required format of s. Weitere Informationen finden Sie im Abschnitt "Hinweise".For more information, see the Remarks section.

provider
IFormatProvider

Ein Objekt, das kulturspezifische Formatierungsinformationen zu s bereitstellt.An object that supplies culture-specific format information about s.

Gibt zurück

Ein Objekt, das der in s enthaltenen Datums- und Uhrzeitangabe nach den Angaben von format und provider entspricht.An object that is equivalent to the date and time contained in s, as specified by format and provider.

Ausnahmen

s oder format ist null.s or format is null.

s oder format ist eine leere Zeichenfolge.s or format is an empty string.

- oder --or- s enthält keine Datum/Uhrzeit-Angabe, die dem im format angegebenen Muster entspricht.s does not contain a date and time that corresponds to the pattern specified in format.

- oder --or- Die Komponente für Stunden und der AM/PM-Kennzeichner in s stimmen nicht überein.The hour component and the AM/PM designator in s do not agree.

Beispiele

Das folgende Beispiel veranschaulicht die ParseExact Methode.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.

Hinweise

Die DateTime.ParseExact(String, String, IFormatProvider)-Methode analysiert die Zeichen folgen Darstellung eines Datums, das in dem vom format-Parameter definierten Format vorliegen muss.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. Außerdem ist es erforderlich, dass die <date > und <time > Elemente der Zeichen folgen Darstellung eines Datums und einer Uhrzeit in der von format angegebenen Reihenfolge angezeigt werden und dass s keinen Leerraum hat, der nicht von format zulässig ist.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. Wenn format ein Datum ohne Zeitelement definiert und der Analyse Vorgang erfolgreich ist, hat der resultierende DateTime-Wert eine Uhrzeit von Mitternacht (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). Wenn format eine Uhrzeit ohne Date-Element definiert und der Analyse Vorgang erfolgreich ist, hat der resultierende DateTime-Wert ein Datum von 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.

Wenn s keine Zeit in einer bestimmten Zeitzone darstellt und der Analyse Vorgang erfolgreich ist, ist die Kind-Eigenschaft des zurückgegebenen DateTime-Werts 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. , Wenn s die Zeit in einer bestimmten Zeitzone darstellt und format Zeitzoneninformationen enthalten kann (z. b., wenn format gleich den Standardformat Bezeichner"o", "r" oder "u" ist, oder wenn Sie die benutzerdefinierten Format Bearbeiter "z", "zz" oder "zzz" enthält. ), die Kind-Eigenschaft des zurückgegebenen DateTime-Werts ist 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.

Der format-Parameter ist eine Zeichenfolge, die entweder einen einzelnen Standardformat Bezeichner oder einen oder mehrere benutzerdefinierte Format Bezeichner enthält, die das erforderliche Format von s definieren.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. Details zu gültigen Formatierungscodes finden Sie unter Standard Format Zeichenfolgen für Datum und Uhrzeit oder benutzerdefinierte Format Zeichenfolgen für Datum und Uhrzeit.For details about valid formatting codes, see Standard Date and Time Format Strings or Custom Date and Time Format Strings.

Hinweis

Wenn format ein benutzerdefiniertes Format Muster ist, das keine Datums-oder Zeit Trennzeichen (z. b. "yyyyMMddhhmm") enthält, verwenden Sie die invariante Kultur für den provider-Parameter und die breiteste Form der einzelnen benutzerdefinierten Format Bezeichner.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. Wenn Sie z. b. Stunden im Format Muster angeben möchten, geben Sie die breitere Form "hh" anstelle der engeren Form "H" an.For example, if you want to specify hours in the format pattern, specify the wider form, "HH", instead of the narrower form, "H".

Die bestimmten Datums-und Uhrzeit Symbole und Zeichen folgen (z. b. Namen der Wochentage in einer bestimmten Sprache), die in s verwendet werden, werden durch den provider-Parameter definiert, ebenso wie das genaue Format von s, wenn format eine Standardformat Bezeichner-Zeichenfolge ist.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. Der Parameter "provider" kann Folgendes sein:The provider parameter can be any of the following:

Wenn provider null ist, wird das CultureInfo-Objekt verwendet, das der aktuellen Kultur entspricht.If provider is null, the CultureInfo object that corresponds to the current culture is used.

Hinweise für Aufrufer

In der .NET Framework 4.NET Framework 4 löst die ParseExact-Methode eine FormatException aus, wenn die zu erteilende Zeichenfolge eine Stunden Komponente und einen am/pm-Kenn Zeichner enthält, der nicht in der Vereinbarung ist.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. In der .NET Framework 3,5.NET Framework 3.5 und früheren Versionen wird der am/pm-Kenn Zeichner ignoriert.In the .NET Framework 3,5.NET Framework 3.5 and earlier versions, the AM/PM designator is ignored.

Siehe auch

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

Parameter

format
ReadOnlySpan<Char>
provider
IFormatProvider

Gibt zurück

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

Parameter

formats
String[]
provider
IFormatProvider

Gibt zurück

ParseExact(String, String, IFormatProvider, DateTimeStyles)

Konvertiert die angegebene Zeichenfolgenentsprechung einer Datums- und Uhrzeitangabe unter Verwendung der Angaben über Format, kulturabhängige Formatierungsinformationen und Stil in die entsprechende 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. Das Format der Zeichenfolgendarstellung muss dem angegebenen Format genau entsprechen. Andernfalls wird eine Ausnahme ausgelöst.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

Parameter

s
String

Eine Zeichenfolge, die eine zu konvertierende Datums- und Zeitangabe enthält.A string containing a date and time to convert.

format
String

Ein Formatbezeichner, der das erforderliche Format von s definiert.A format specifier that defines the required format of s. Weitere Informationen finden Sie im Abschnitt "Hinweise".For more information, see the Remarks section.

provider
IFormatProvider

Ein Objekt, das kulturspezifische Formatierungsinformationen zu s bereitstellt.An object that supplies culture-specific formatting information about s.

style
DateTimeStyles

Eine bitweise Kombination der Enumerationswerte, die zusätzliche Informationen über s, über in s möglicherweise vorhandene Stilelementen oder über die Konvertierung von s in einen DateTime-Wert bereitstellt.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. Ein häufig angegebener Wert ist None.A typical value to specify is None.

Gibt zurück

Ein Objekt, das der in s enthaltenen Datums- und Uhrzeitangabe nach den Angaben von format, provider und style entspricht.An object that is equivalent to the date and time contained in s, as specified by format, provider, and style.

Ausnahmen

s oder format ist null.s or format is null.

s oder format ist eine leere Zeichenfolge.s or format is an empty string.

- oder --or- s enthält keine Datum/Uhrzeit-Angabe, die dem im format angegebenen Muster entspricht.s does not contain a date and time that corresponds to the pattern specified in format.

- oder --or- Die Komponente für Stunden und der AM/PM-Kennzeichner in s stimmen nicht überein.The hour component and the AM/PM designator in s do not agree.

style enthält eine ungültige Kombination von DateTimeStyles-Werten.style contains an invalid combination of DateTimeStyles values. Beispielsweise sowohl AssumeLocal als auch AssumeUniversal.For example, both AssumeLocal and AssumeUniversal.

Beispiele

Das folgende Beispiel veranschaulicht die ParseExact(String, String, IFormatProvider) Methode.The following example demonstrates the ParseExact(String, String, IFormatProvider) method. Beachten Sie, dass die Zeichenfolge "5/01/2009 8:30 am" nicht erfolgreich analysiert werden kann, wenn der Parameter "styles" gleich DateTimeStyles.None ist, da führende Leerzeichen von format nicht zulässig sind.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. Außerdem kann die Zeichenfolge "5/01/2009 09:00" nicht erfolgreich mit der format von "mm/dd/yyyyhh: mm" analysiert werden, da die Datums Zeichenfolge nicht der Monatsnummer vorangestellt ist, wie dies für format erforderlich ist.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).

Hinweise

Die DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles)-Methode analysiert die Zeichen folgen Darstellung eines Datums, das in einem Format vorliegen muss, das durch den format-Parameter definiert wird.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. Außerdem ist es erforderlich, dass die Datums-und Uhrzeit Elemente in s in der durch format angegebenen Reihenfolge angezeigt werden.It also requires that the date and time elements in s appear in the order specified by format. Wenn s nicht mit dem Muster des format-Parameters identisch ist, löst die Methode eine FormatException aus, wenn alle Variationen durch den style-Parameter definiert sind.If s does not match the pattern of the format parameter, with any variations defined by the style parameter, the method throws a FormatException. Im Gegensatz dazu analysiert die DateTime.Parse(String, IFormatProvider, DateTimeStyles)-Methode die Zeichen folgen Darstellung eines Datums in einem beliebigen Format, das vom DateTimeFormatInfo-Objekt des Format Anbieters erkannt wird.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. Die DateTime.Parse(String, IFormatProvider, DateTimeStyles)-Methode ermöglicht auch, dass die Datums-und Uhrzeit Elemente in s in beliebiger Reihenfolge angezeigt werden.The DateTime.Parse(String, IFormatProvider, DateTimeStyles) method also allows the date and time elements in s to appear in any order.

Wenn der Parameter "s" nur eine Uhrzeit und kein Datum enthält, wird das aktuelle Datum verwendet, es sei denn, der Parameter "style" enthält das Flag "DateTimeStyles.NoCurrentDateDefault". in diesem Fall wird das Standard Datum (DateTime.Date.MinValue) verwendet.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. Wenn der Parameter "s" nur ein Datum und keine Uhrzeit enthält, wird Mitternacht (00:00:00) verwendet.If the s parameter contains only a date and no time, midnight (00:00:00) is used. Der Parameter "style" bestimmt auch, ob der Parameter "s" führende, innere oder nachfolgende leer Raum Zeichen enthalten kann.The style parameter also determines whether the s parameter can contain leading, inner, or trailing white space characters.

Wenn s keine Zeitzoneninformationen enthält, ist die Kind-Eigenschaft des zurückgegebenen DateTime-Objekts DateTimeKind.Unspecified.If s contains no time zone information, the Kind property of the returned DateTime object is DateTimeKind.Unspecified. Dieses Verhalten kann mit dem DateTimeStyles.AssumeLocal-Flag geändert werden, das einen DateTime-Wert zurückgibt, dessen Kind-Eigenschaft DateTimeKind.Local ist, oder mit den DateTimeStyles.AssumeUniversal-und DateTimeStyles.AdjustToUniversal-Flags, die einen DateTime-Wert zurückgibt, dessen Kind-Eigenschaft DateTimeKind.Utc ist.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. Wenn s Zeitzoneninformationen enthält, wird die Uhrzeit ggf. in lokale Zeit konvertiert, und die Kind-Eigenschaft des zurückgegebenen DateTime-Objekts wird auf DateTimeKind.Local festgelegt.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. Dieses Verhalten kann geändert werden, indem Sie das DateTimeStyles.RoundtripKind-Flag verwenden, um die koordinierte Weltzeit (UTC) nicht in eine Ortszeit zu konvertieren und die Kind-Eigenschaft auf DateTimeKind.Utc festzulegen.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.

Der Parameter "format" definiert das erforderliche Muster des Parameters "s".The format parameter defines the required pattern of the s parameter. Sie kann aus der Tabelle mit den benutzerdefinierten Format Zeichenfolgen für Datum und Uhrzeit oder einem einzelnen Standardformat Bezeichner, der ein vordefiniertes Muster identifiziert, aus der standardmäßigen Format Zeichenfolge für Datum und Uhrzeit bestehen.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.

Wenn Sie keine Datums-oder Uhrzeit Trennzeichen in einem benutzerdefinierten Format Muster verwenden, verwenden Sie die invariante Kultur für den provider-Parameter und die breiteste Form der einzelnen benutzerdefinierten Format Bezeichner.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. Wenn Sie z. b. Stunden im Muster angeben möchten, geben Sie die breitere Form "hh" anstelle des engeren Formulars "H" an.For example, if you want to specify hours in the pattern, specify the wider form, "HH", instead of the narrower form, "H".

Hinweis

Anstatt festzulegen, dass s einem einzelnen Format entsprechen muss, damit der Analyse Vorgang erfolgreich ausgeführt werden kann, können Sie die DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles)-Methode aufzurufen und mehrere zulässige Formate angeben.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. Dadurch wird die Wahrscheinlichkeit, dass der Analyse Vorgang erfolgreich durchgeführt wird.This makes the parse operation more likely to succeed.

Der Parameter "styles" enthält mindestens einen Member der DateTimeStyles-Enumeration, der bestimmt, ob und wo von format nicht definierte Leerräume in s vorkommen können und das genaue Verhalten des Analyse Vorgangs steuern.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. In der folgenden Tabelle wird beschrieben, wie sich jedes Element der DateTimeStyles-Enumeration auf den Vorgang der ParseExact(String, String, IFormatProvider, DateTimeStyles)-Methode auswirkt.The following table describes how each member of the DateTimeStyles enumeration affects the operation of the ParseExact(String, String, IFormatProvider, DateTimeStyles) method.

DateTimeStyles-MemberDateTimeStyles member BeschreibungDescription
AdjustToUniversal Analysiert s und konvertiert ihn ggf. in UTC.Parses s and, if necessary, converts it to UTC. Wenn s einen Zeit Zonen Offset enthält, oder wenn s keine Zeitzoneninformationen enthält, aber styles das DateTimeStyles.AssumeLocal-Flag enthält, analysiert die-Methode die Zeichenfolge, ruft ToUniversalTime auf, um den zurückgegebenen DateTime-Wert in UTC zu konvertieren, und legt die Kind-Eigenschaft auf DateTimeKind.Utc fest.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. Wenn s angibt, dass es sich um UTC handelt, oder wenn s keine Zeitzoneninformationen enthält, styles jedoch das DateTimeStyles.AssumeUniversal-Flag enthält, analysiert die Methode die Zeichenfolge, führt keine Zeit Zonen Konvertierung für den zurückgegebenen DateTime-Wert aus und legt die Kind-Eigenschaft fest. zum 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 allen anderen Fällen hat das Flag keine Auswirkung.In all other cases, the flag has no effect.
AllowInnerWhite Gibt an, dass der von format nicht definierte Leerraum zwischen einem einzelnen Date-oder Time-Element angezeigt werden kann.Specifies that white space not defined by format can appear between any individual date or time element.
AllowLeadingWhite Gibt an, dass Leerzeichen, die nicht von format definiert werden, am Anfang s vorkommen können.Specifies that white space not defined by format can appear at the beginning of s.
AllowTrailingWhite Gibt an, dass Leerzeichen, die nicht von format definiert werden, am Ende von s vorkommen können.Specifies that white space not defined by format can appear at the end of s.
AllowWhiteSpaces Gibt an, dass s führende, innere und nachfolgende Leerzeichen enthalten kann, die nicht von format definiert werden.Specifies that s may contain leading, inner, and trailing white spaces not defined by format.
AssumeLocal Gibt an, dass, wenn s keine Zeitzoneninformationen fehlt, angenommen wird, dass es sich um eine lokale Zeit handelt.Specifies that if s lacks any time zone information, it is assumed to represent a local time. Wenn das DateTimeStyles.AdjustToUniversal-Flag nicht vorhanden ist, wird die Kind-Eigenschaft des zurückgegebenen DateTime-Werts auf DateTimeKind.Local festgelegt.Unless the DateTimeStyles.AdjustToUniversal flag is present, the Kind property of the returned DateTime value is set to DateTimeKind.Local.
AssumeUniversal Gibt an, dass, wenn s keine Zeitzoneninformationen fehlt, angenommen wird, dass es sich um die UTC handelt.Specifies that if s lacks any time zone information, it is assumed to represent UTC. Wenn das DateTimeStyles.AdjustToUniversal-Flag nicht vorhanden ist, konvertiert die-Methode den zurückgegebenen DateTime-Wert von UTC in Ortszeit und legt seine Kind-Eigenschaft auf DateTimeKind.Local fest.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 Wenn s Zeit ohne Datumsangaben enthält, wird das Datum des Rückgabewerts auf DateTime.MinValue.Date festgelegt.If s contains time without date information, the date of the return value is set to DateTime.MinValue.Date.
None Der Parameter "s" wird mit Standardwerten analysiert.The s parameter is parsed using default values. In format sind keine Leerzeichen zulässig.No white space other than that present in format is allowed. Wenn s eine Datums Komponente fehlt, wird das Datum des zurückgegebenen DateTime-Werts auf 1/1/0001 festgelegt.If s lacks a date component, the date of the returned DateTime value is set to 1/1/0001. Wenn s keine Zeitzoneninformationen enthält, wird die Kind-Eigenschaft des zurückgegebenen DateTime-Objekts auf DateTimeKind.Unspecified festgelegt.If s contains no time zone information, the Kind property of the returned DateTime object is set to DateTimeKind.Unspecified. Wenn Zeitzoneninformationen in s vorhanden sind, wird die Uhrzeit in die Ortszeit konvertiert, und die Kind-Eigenschaft des zurückgegebenen DateTime-Objekts wird auf DateTimeKind.Local festgelegt.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 Bei Zeichen folgen, die Zeitzoneninformationen enthalten, versucht, die Konvertierung in den DateTime-Wert Date und Time zu verhindern, wobei die Kind-Eigenschaft auf DateTimeKind.Local festgelegt ist.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. Dieses Flag verhindert hauptsächlich die Konvertierung von UTC-Zeiten in lokale Uhrzeiten.This flag primarily prevents the conversion of UTC times to local times.

Die bestimmten Datums-und Uhrzeit Symbole und Zeichen folgen (z. b. die Namen der Wochentage in einer bestimmten Sprache), die in s verwendet werden, werden durch den provider-Parameter definiert, ebenso wie das genaue Format von s, wenn format eine Standardformat Bezeichner-Zeichenfolge ist.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. Der Parameter "provider" kann Folgendes sein:The provider parameter can be any of the following:

Wenn provider null ist, wird das CultureInfo-Objekt verwendet, das der aktuellen Kultur entspricht.If provider is null, the CultureInfo object that corresponds to the current culture is used.

Hinweise für Aufrufer

In der .NET Framework 4.NET Framework 4 löst die ParseExact-Methode eine FormatException aus, wenn die zu erteilende Zeichenfolge eine Stunden Komponente und einen am/pm-Kenn Zeichner enthält, der nicht in der Vereinbarung ist.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. In der .NET Framework 3,5.NET Framework 3.5 und früheren Versionen wird der am/pm-Kenn Zeichner ignoriert.In the .NET Framework 3,5.NET Framework 3.5 and earlier versions, the AM/PM designator is ignored.

Siehe auch

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

Konvertiert die angegebene Zeichenfolgenentsprechung einer Datums- und Uhrzeitangabe unter Verwendung des angegebenen Formatarrays, der kulturspezifischen Formatierungsinformationen und des Stils in die DateTime-Entsprechung.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. Das Format der Zeichenfolgendarstellung muss mindestens einem der angegebenen Formate genau entsprechen. Andernfalls wird eine Ausnahme ausgelöst.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

Parameter

s
String

Eine Zeichenfolge, die eine zu konvertierende Datums- und Zeitangabe enthält.A string that contains a date and time to convert.

formats
String[]

Ein Array mit den zulässigen Formaten von s.An array of allowable formats of s. Weitere Informationen finden Sie im Abschnitt "Hinweise".For more information, see the Remarks section.

provider
IFormatProvider

Ein Objekt, das kulturspezifische Formatierungsinformationen zu s bereitstellt.An object that supplies culture-specific format information about s.

style
DateTimeStyles

Eine bitweise Kombination von Enumerationswerten, die das zulässige Format von s angibt.A bitwise combination of enumeration values that indicates the permitted format of s. Ein häufig angegebener Wert ist None.A typical value to specify is None.

Gibt zurück

Ein Objekt, das der in s enthaltenen Datums- und Uhrzeitangabe nach den Angaben von formats, provider und style entspricht.An object that is equivalent to the date and time contained in s, as specified by formats, provider, and style.

Ausnahmen

s oder formats ist null.s or formats is null.

s ist eine leere Zeichenfolge.s is an empty string.

- oder --or- Ein Element von formats ist eine leere Zeichenfolge.an element of formats is an empty string.

- oder --or- s enthält keine Datum/Uhrzeit-Angabe, die einem Element von formats entspricht.s does not contain a date and time that corresponds to any element of formats.

- oder --or- Die Komponente für Stunden und der AM/PM-Kennzeichner in s stimmen nicht überein.The hour component and the AM/PM designator in s do not agree.

style enthält eine ungültige Kombination von DateTimeStyles-Werten.style contains an invalid combination of DateTimeStyles values. Beispielsweise sowohl AssumeLocal als auch AssumeUniversal.For example, both AssumeLocal and AssumeUniversal.

Beispiele

Im folgenden Beispiel wird die DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles)-Methode verwendet, um sicherzustellen, dass eine Zeichenfolge in mehreren möglichen Formaten erfolgreich analysiert werden kann.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.

Hinweise

Die DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles)-Methode analysiert die Zeichen folgen Darstellung eines Datums, das mit einem der Muster übereinstimmt, die dem Parameter formats zugewiesen sind.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. Wenn die Zeichenfolge s mit keinem dieser Muster mit einer der vom styles-Parameter definierten Variationen identisch ist, löst die Methode eine FormatException aus.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. Abgesehen vom Vergleich von s mit mehreren Formatierungs Mustern anstatt mit einem einzelnen Formatierungs Muster verhält sich diese Überladung identisch mit der DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles)-Methode.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.

Der s-Parameter enthält das Datum und die Uhrzeit, die analysiert werden sollen.The s parameter contains the date and time to parse. Wenn der Parameter "s" nur eine Uhrzeit und kein Datum enthält, wird das aktuelle Datum verwendet, es sei denn, der Parameter "style" enthält das Flag "DateTimeStyles.NoCurrentDateDefault". in diesem Fall wird das Standard Datum (DateTime.Date.MinValue) verwendet.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. Wenn der Parameter "s" nur ein Datum und keine Uhrzeit enthält, wird Mitternacht (00:00:00) verwendet.If the s parameter contains only a date and no time, midnight (00:00:00) is used. Der Parameter "style" bestimmt auch, ob der Parameter "s" führende, innere oder nachfolgende Leerzeichen enthalten darf, die nicht von einer der Format Zeichenfolgen in formats zulässig sind.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.

Wenn s keine Zeitzoneninformationen enthält, ist die Kind-Eigenschaft des zurückgegebenen DateTime-Objekts DateTimeKind.Unspecified.If s contains no time zone information, the Kind property of the returned DateTime object is DateTimeKind.Unspecified. Dieses Verhalten kann mit dem DateTimeStyles.AssumeLocal-Flag geändert werden, das einen DateTime-Wert zurückgibt, dessen Kind-Eigenschaft DateTimeKind.Local ist, oder mit den DateTimeStyles.AssumeUniversal-und DateTimeStyles.AdjustToUniversal-Flags, die einen DateTime-Wert zurückgibt, dessen Kind-Eigenschaft DateTimeKind.Utc ist.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. Wenn s Zeitzoneninformationen enthält, wird die Uhrzeit ggf. in lokale Zeit konvertiert, und die Kind-Eigenschaft des zurückgegebenen DateTime-Objekts wird auf DateTimeKind.Local festgelegt.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. Dieses Verhalten kann geändert werden, indem Sie das DateTimeStyles.RoundtripKind-Flag verwenden, um die koordinierte Weltzeit (UTC) nicht in eine Ortszeit zu konvertieren, und legen Sie die Eigenschaft Kind auf DateTimeKind.Utc fest.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.

Der Parameter "formats" enthält ein Array von Mustern, von denen eine s exakt übereinstimmen muss, wenn der Analyse Vorgang erfolgreich durchgeführt werden soll.The formats parameter contains an array of patterns, one of which s must match exactly if the parse operation is to succeed. Die Muster im formats-Parameter bestehen aus einem oder mehreren benutzerdefinierten Format Bezeichnern aus der benutzerdefinierten Format Zeichenfolgen-Tabelle für Datum und Uhrzeit oder einem einzelnen Standardformat Bezeichner, der ein vordefiniertes Muster identifiziert, vom Standard Datum und-Uhrzeit. Zeichen folgen Tabelle formatieren.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.

Wenn Sie keine Datums-oder Uhrzeit Trennzeichen in einem benutzerdefinierten Format Muster verwenden, verwenden Sie die invariante Kultur für den provider-Parameter und die breiteste Form der einzelnen benutzerdefinierten Format Bezeichner.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. Wenn Sie z. b. Stunden im Muster angeben möchten, geben Sie die breitere Form "hh" anstelle des engeren Formulars "H" an.For example, if you want to specify hours in the pattern, specify the wider form, "HH", instead of the narrower form, "H".

Der Parameter "styles" enthält mindestens einen Member der DateTimeStyles-Enumeration, der bestimmt, ob und wo von format nicht definierte Leerräume in s vorkommen können und das genaue Verhalten des Analyse Vorgangs steuern.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. In der folgenden Tabelle wird beschrieben, wie sich jedes Element der DateTimeStyles-Enumeration auf den Vorgang der ParseExact(String, String, IFormatProvider, DateTimeStyles)-Methode auswirkt.The following table describes how each member of the DateTimeStyles enumeration affects the operation of the ParseExact(String, String, IFormatProvider, DateTimeStyles) method.

DateTimeStyles-MemberDateTimeStyles member BeschreibungDescription
AdjustToUniversal Analysiert s und konvertiert ihn ggf. in UTC.Parses s and, if necessary, converts it to UTC. Wenn s einen Zeit Zonen Offset enthält, oder wenn s keine Zeitzoneninformationen enthält, aber styles das DateTimeStyles.AssumeLocal-Flag enthält, analysiert die-Methode die Zeichenfolge, ruft ToUniversalTime auf, um den zurückgegebenen DateTime-Wert in UTC zu konvertieren, und legt die Kind-Eigenschaft auf DateTimeKind.Utc fest.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. Wenn s angibt, dass es sich um UTC handelt, oder wenn s keine Zeitzoneninformationen enthält, styles jedoch das DateTimeStyles.AssumeUniversal-Flag enthält, analysiert die Methode die Zeichenfolge, führt keine Zeit Zonen Konvertierung für den zurückgegebenen DateTime-Wert aus und legt die Kind-Eigenschaft fest. zum 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 allen anderen Fällen hat das Flag keine Auswirkung.In all other cases, the flag has no effect.
AllowInnerWhite Gibt an, dass der von format nicht definierte Leerraum zwischen einem einzelnen Date-oder Time-Element angezeigt werden kann.Specifies that white space not defined by format can appear between any individual date or time element.
AllowLeadingWhite Gibt an, dass Leerzeichen, die nicht von format definiert werden, am Anfang s vorkommen können.Specifies that white space not defined by format can appear at the beginning of s.
AllowTrailingWhite Gibt an, dass Leerzeichen, die nicht von format definiert werden, am Ende von s vorkommen können.Specifies that white space not defined by format can appear at the end of s.
AllowWhiteSpaces Gibt an, dass s führende, innere und nachfolgende Leerzeichen enthalten kann, die nicht von format definiert werden.Specifies that s may contain leading, inner, and trailing white spaces not defined by format.
AssumeLocal Gibt an, dass, wenn s keine Zeitzoneninformationen fehlt, angenommen wird, dass es sich um eine lokale Zeit handelt.Specifies that if s lacks any time zone information, it is assumed to represent a local time. Wenn das DateTimeStyles.AdjustToUniversal-Flag nicht vorhanden ist, wird die Kind-Eigenschaft des zurückgegebenen DateTime-Werts auf DateTimeKind.Local festgelegt.Unless the DateTimeStyles.AdjustToUniversal flag is present, the Kind property of the returned DateTime value is set to DateTimeKind.Local.
AssumeUniversal Gibt an, dass, wenn s keine Zeitzoneninformationen fehlt, angenommen wird, dass es sich um die UTC handelt.Specifies that if s lacks any time zone information, it is assumed to represent UTC. Wenn das DateTimeStyles.AdjustToUniversal-Flag nicht vorhanden ist, konvertiert die-Methode den zurückgegebenen DateTime-Wert von UTC in Ortszeit und legt seine Kind-Eigenschaft auf DateTimeKind.Local fest.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 Wenn s Zeit ohne Datumsangaben enthält, wird das Datum des Rückgabewerts auf DateTime.MinValue.Date festgelegt.If s contains time without date information, the date of the return value is set to DateTime.MinValue.Date.
None Der Parameter "s" wird mit Standardwerten analysiert.The s parameter is parsed using default values. In format sind keine Leerzeichen zulässig.No white space other than that present in format is allowed. Wenn s eine Datums Komponente fehlt, wird das Datum des zurückgegebenen DateTime-Werts auf 1/1/0001 festgelegt.If s lacks a date component, the date of the returned DateTime value is set to 1/1/0001. Wenn s keine Zeitzoneninformationen enthält, wird die Kind-Eigenschaft des zurückgegebenen DateTime-Objekts auf DateTimeKind.Unspecified festgelegt.If s contains no time zone information, the Kind property of the returned DateTime object is set to DateTimeKind.Unspecified. Wenn Zeitzoneninformationen in s vorhanden sind, wird die Uhrzeit in die Ortszeit konvertiert, und die Kind-Eigenschaft des zurückgegebenen DateTime-Objekts wird auf DateTimeKind.Local festgelegt.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 Bei Zeichen folgen, die Zeitzoneninformationen enthalten, versucht, die Konvertierung in ein Datum und eine Uhrzeit zu verhindern, deren Kind-Eigenschaft auf DateTimeKind.Local festgelegt ist.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. Dieses Flag verhindert hauptsächlich die Konvertierung von UTC-Zeiten in lokale Uhrzeiten.This flag primarily prevents the conversion of UTC times to local times.

Die bestimmten Datums-und Uhrzeit Symbole und Zeichen folgen (z. b. die Namen der Wochentage in einer bestimmten Sprache), die in s verwendet werden, werden durch den provider-Parameter definiert, ebenso wie das genaue Format von s, wenn format eine Standardformat Bezeichner-Zeichenfolge ist.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. Der Parameter "provider" kann Folgendes sein:The provider parameter can be any of the following:

Wenn provider null ist, wird das CultureInfo-Objekt verwendet, das der aktuellen Kultur entspricht.If provider is null, the CultureInfo object that corresponds to the current culture is used.

Hinweise für Aufrufer

In der .NET Framework 4.NET Framework 4 löst die ParseExact-Methode eine FormatException aus, wenn die zu erteilende Zeichenfolge eine Stunden Komponente und einen am/pm-Kenn Zeichner enthält, der nicht in der Vereinbarung ist.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. In der .NET Framework 3,5.NET Framework 3.5 und früheren Versionen wird der am/pm-Kenn Zeichner ignoriert.In the .NET Framework 3,5.NET Framework 3.5 and earlier versions, the AM/PM designator is ignored.

Siehe auch

Gilt für: