DateTime.ParseExact Metoda

Definicja

Konwertuje określony ciąg reprezentujący datę i godzinę na jego odpowiednik DateTime.Converts the specified string representation of a date and time to its DateTime equivalent. Format ciągu reprezentującego musi dokładnie pasować do określonego formatu lub został zgłoszony wyjątek.The format of the string representation must match a specified format exactly or an exception is thrown.

Przeciążenia

ParseExact(String, String, IFormatProvider)

Konwertuje określony ciąg reprezentujący datę i godzinę do DateTime odpowiednika przy użyciu określonego formatu i informacji o formacie specyficznym dla kultury.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format and culture-specific format information. Format ciągu reprezentującego musi dokładnie pasować do wskazanego formatu.The format of the string representation must match the specified format exactly.

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

Konwertuje określoną reprezentację wartości daty i godziny do DateTime równoważnej przy użyciu określonego formatu, informacji o formacie specyficznym dla kultury i stylu.Converts the specified span representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. Format ciągu reprezentującego musi dokładnie pasować do określonego formatu lub został zgłoszony wyjątek.The format of the string representation must match the specified format exactly or an exception is thrown.

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

Konwertuje określoną reprezentację wartości daty i godziny do DateTime równoważnej przy użyciu określonej tablicy formatów, informacji o formacie specyficznym dla kultury i stylu.Converts the specified span representation of a date and time to its DateTime equivalent using the specified array of formats, culture-specific format information, and style. Format ciągu reprezentującego musi dokładnie pasować do co najmniej jednego z określonych formatów lub został zgłoszony wyjątek.The format of the string representation must match at least one of the specified formats exactly or an exception is thrown.

ParseExact(String, String, IFormatProvider, DateTimeStyles)

Konwertuje określony ciąg reprezentujący datę i godzinę do DateTime odpowiednika przy użyciu określonego formatu, informacji o formacie specyficznym dla kultury i stylu.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. Format ciągu reprezentującego musi dokładnie pasować do określonego formatu lub został zgłoszony wyjątek.The format of the string representation must match the specified format exactly or an exception is thrown.

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

Konwertuje określony ciąg reprezentujący datę i godzinę do DateTime odpowiednika przy użyciu określonej tablicy formatów, informacji o formacie specyficznym dla kultury i stylu.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. Format ciągu reprezentującego musi dokładnie pasować do co najmniej jednego z określonych formatów lub został zgłoszony wyjątek.The format of the string representation must match at least one of the specified formats exactly or an exception is thrown.

Uwagi

Ważne

Ery kalendarza japońskiego opierają się na reign imperatora i w związku z tym są powinna się zmienić.Eras in the Japanese calendars are based on the emperor's reign and are therefore expected to change. Na przykład 1 maja 2019 oznaczony początku ery Reiwa JapaneseCalendar i JapaneseLunisolarCalendar.For example, May 1, 2019 marked the beginning of the Reiwa era in the JapaneseCalendar and JapaneseLunisolarCalendar. Zmiana era ma wpływ na wszystkie aplikacje, które używają tych kalendarzy.Such a change of era affects all applications that use these calendars. Zobacz obsługi nowej ery usług w kalendarza japońskiego na platformie .NET uzyskać więcej informacji, jak i do określenia aplikacji, których dotyczy problem.See Handling a new era in the Japanese calendar in .NET for more information and to determine whether your applications are affected. Zobacz przygotowanie aplikacji w taki sposób, aby ta zmiana era japoński instrukcje dotyczące testowania aplikacji w systemach Windows w celu zapewnienia ich gotowości, aby ta zmiana era.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. Zobacz Praca z erami dla funkcji na platformie .NET, które obsługują kalendarzach z erami wielu i najlepsze rozwiązania, gdy praca z kalendarzami, które obsługują wiele er.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)

Konwertuje określony ciąg reprezentujący datę i godzinę do DateTime odpowiednika przy użyciu określonego formatu i informacji o formacie specyficznym dla kultury.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format and culture-specific format information. Format ciągu reprezentującego musi dokładnie pasować do wskazanego formatu.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

Parametry

s
String

Ciąg zawierający datę i godzinę, które należy przekształcić.A string that contains a date and time to convert.

format
String

Specyfikator formatu definiujący wymagany format s.A format specifier that defines the required format of s. Aby uzyskać więcej informacji, zobacz sekcję: Uwagi.For more information, see the Remarks section.

provider
IFormatProvider

Obiekt, który dostarcza informacje o formacie specyficznym dla kultury dotyczące s.An object that supplies culture-specific format information about s.

Zwraca

Obiekt, który jest równoważny dacie i godzinie zawartej w s, określony przez format i provider.An object that is equivalent to the date and time contained in s, as specified by format and provider.

Wyjątki

nulls lub format.s or format is null.

s lub format jest ciągiem pustym.s or format is an empty string.

— lub —-or- s nie zawiera daty i godziny odpowiadającej wzorzecowi określonemu w format.s does not contain a date and time that corresponds to the pattern specified in format.

— lub —-or- Składnik godziny i oznaczenie "AM/PM" w s nie zgadzają się.The hour component and the AM/PM designator in s do not agree.

Przykłady

Poniższy przykład demonstruje metodę 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.

Uwagi

Metoda DateTime.ParseExact(String, String, IFormatProvider) analizuje ciąg reprezentujący datę, która musi być w formacie zdefiniowanym przez parametr 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. Wymaga również, aby <Data > i <czas > elementów ciągu reprezentującego datę i godzinę pojawiają się w kolejności określonej przez format, a s nie mają białych znaków innych niż dozwolone przez 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. Jeśli format definiuje datę z nieprawidłowym elementem czasu, a operacja analizy powiedzie się, wynikiem DateTime wartość będzie północ (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). Jeśli format definiuje godzinę bez elementu Date, a operacja analizy powiedzie się, wynikiem DateTime wartość jest data 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.

Jeśli s nie reprezentuje godziny w określonej strefie czasowej, a operacja analizy powiedzie się, właściwość Kind zwróconej wartości DateTime jest 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. Jeśli s reprezentuje czas w określonej strefie czasowej i format umożliwia obecność informacji o strefie czasowej (na przykład jeśli format jest równa specyfikatorom formatu standardowego "o", "r" lub "u", lub jeśli zawiera specyfikatory formatu "z", "ZZ" lub "ZZZ", właściwość Kind zwracanej wartości DateTime jest 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 parametr jest ciągiem zawierającym pojedynczy specyfikator formatu standardowego lub jeden lub więcej specyfikatorów formatu niestandardowego, które definiują wymagany 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. Aby uzyskać szczegółowe informacje na temat prawidłowych kodów formatowania, zobacz ciągi standardowego formatu daty i godziny lub Niestandardowe ciągi formatujące datę i godzinę.For details about valid formatting codes, see Standard Date and Time Format Strings or Custom Date and Time Format Strings.

Uwaga

Jeśli format jest wzorcem formatu niestandardowego, który nie zawiera separatorów dat lub godzin (takich jak "yyyyMMddHHmm"), użyj niezmiennej kultury dla parametru provider i najszerszej formy każdego niestandardowego specyfikatora formatu.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. Na przykład jeśli chcesz określić godziny we wzorcu formatu, określ szerszy formularz, "HH", a nie "Narrow", "H".For example, if you want to specify hours in the format pattern, specify the wider form, "HH", instead of the narrower form, "H".

Określone symbole daty i godziny oraz ciągi (takie jak nazwy dni tygodnia w określonym języku) używane w s są definiowane przez parametr provider, tak s jak w przypadku, gdy format jest ciągiem specyfikatora formatu standardowego.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. Parametr provider może być dowolną z następujących:The provider parameter can be any of the following:

Jeśli provider jest null, używany jest obiekt CultureInfo, który odpowiada bieżącej kulturze.If provider is null, the CultureInfo object that corresponds to the current culture is used.

Uwagi dotyczące wywoływania

W Program .NET Framework 4.NET Framework 4Metoda ParseExact zgłasza FormatException, jeśli ciąg, który ma być analizowany, zawiera składnik godziny i oznaczenie AM/PM, które nie są zawarte w umowie.In the Program .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. W Program .NET Framework 3,5.NET Framework 3.5 i starszych wersjach oznaczenie AM/PM jest ignorowane.In the Program .NET Framework 3,5.NET Framework 3.5 and earlier versions, the AM/PM designator is ignored.

Zobacz też

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

Konwertuje określoną reprezentację wartości daty i godziny do DateTime równoważnej przy użyciu określonego formatu, informacji o formacie specyficznym dla kultury i stylu.Converts the specified span representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. Format ciągu reprezentującego musi dokładnie pasować do określonego formatu lub został zgłoszony wyjątek.The format of the string representation must match the specified format exactly or an exception is thrown.

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

Parametry

s
ReadOnlySpan<Char>

Zakres zawierający znaki reprezentujące datę i godzinę do przekonwertowania.A span containing the characters that represent a date and time to convert.

format
ReadOnlySpan<Char>

Zakres zawierający znaki reprezentujące specyfikator formatu, który definiuje wymagany format s.A span containing the characters that represent a format specifier that defines the required format of s.

provider
IFormatProvider

Obiekt, który dostarcza informacje o formatowaniu specyficzne dla kultury dotyczące s.An object that supplies culture-specific formatting information about s.

style
DateTimeStyles

Bitowa kombinacja wartości wyliczenia, która zawiera dodatkowe informacje o s, o elementach stylu, które mogą być obecne w s, lub o konwersji z s na wartość 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. Typową wartością do określenia jest None.A typical value to specify is None.

Zwraca

Obiekt, który jest równoważny dacie i godzinie zawartej w s, określony przez format, provideri style.An object that is equivalent to the date and time contained in s, as specified by format, provider, and style.

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

Konwertuje określoną reprezentację wartości daty i godziny do DateTime równoważnej przy użyciu określonej tablicy formatów, informacji o formacie specyficznym dla kultury i stylu.Converts the specified span representation of a date and time to its DateTime equivalent using the specified array of formats, culture-specific format information, and style. Format ciągu reprezentującego musi dokładnie pasować do co najmniej jednego z określonych formatów lub został zgłoszony wyjątek.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 (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

Parametry

s
ReadOnlySpan<Char>

Zakres zawierający znaki reprezentujące datę i godzinę do przekonwertowania.A span containing the characters that represent a date and time to convert.

formats
String[]

Tablica dozwolonych formatów s.An array of allowable formats of s.

provider
IFormatProvider

Obiekt, który dostarcza informacje o formacie specyficznym dla kultury dotyczące s.An object that supplies culture-specific format information about s.

style
DateTimeStyles

Bitowa kombinacja wartości wyliczenia wskazująca dozwolony format s.A bitwise combination of enumeration values that indicates the permitted format of s. Typową wartością do określenia jest None.A typical value to specify is None.

Zwraca

Obiekt, który jest równoważny dacie i godzinie zawartej w s, określony przez formats, provideri style.An object that is equivalent to the date and time contained in s, as specified by formats, provider, and style.

ParseExact(String, String, IFormatProvider, DateTimeStyles)

Konwertuje określony ciąg reprezentujący datę i godzinę do DateTime odpowiednika przy użyciu określonego formatu, informacji o formacie specyficznym dla kultury i stylu.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. Format ciągu reprezentującego musi dokładnie pasować do określonego formatu lub został zgłoszony wyjątek.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

Parametry

s
String

Ciąg zawierający datę i godzinę konwersji.A string containing a date and time to convert.

format
String

Specyfikator formatu definiujący wymagany format s.A format specifier that defines the required format of s. Aby uzyskać więcej informacji, zobacz sekcję: Uwagi.For more information, see the Remarks section.

provider
IFormatProvider

Obiekt, który dostarcza informacje o formatowaniu specyficzne dla kultury dotyczące s.An object that supplies culture-specific formatting information about s.

style
DateTimeStyles

Bitowa kombinacja wartości wyliczenia, która zawiera dodatkowe informacje o s, o elementach stylu, które mogą być obecne w s, lub o konwersji z s na wartość 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. Typową wartością do określenia jest None.A typical value to specify is None.

Zwraca

Obiekt, który jest równoważny dacie i godzinie zawartej w s, określony przez format, provideri style.An object that is equivalent to the date and time contained in s, as specified by format, provider, and style.

Wyjątki

nulls lub format.s or format is null.

s lub format jest ciągiem pustym.s or format is an empty string.

— lub —-or- s nie zawiera daty i godziny odpowiadającej wzorzecowi określonemu w format.s does not contain a date and time that corresponds to the pattern specified in format.

— lub —-or- Składnik godziny i oznaczenie "AM/PM" w s nie zgadzają się.The hour component and the AM/PM designator in s do not agree.

style zawiera nieprawidłową kombinację wartości DateTimeStyles.style contains an invalid combination of DateTimeStyles values. Na przykład zarówno AssumeLocal, jak i AssumeUniversal.For example, both AssumeLocal and AssumeUniversal.

Przykłady

Poniższy przykład demonstruje metodę ParseExact(String, String, IFormatProvider).The following example demonstrates the ParseExact(String, String, IFormatProvider) method. Należy pamiętać, że nie można przeanalizować ciągu "5/01/2009 8:30 AM", gdy parametr styles jest równy DateTimeStyles.None, ponieważ spacje wiodące nie są dozwolone przez 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. Ponadto nie można pomyślnie przeanalizować ciągu "5/01/2009 09:00" przy użyciu format "MM/DD/yyyyhh: mm", ponieważ ciąg daty nie poprzedza numeru miesiąca poprzedzającego zero, zgodnie z wymaganiami 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).

Uwagi

Metoda DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) analizuje ciąg reprezentujący datę, która musi być w formacie zdefiniowanym przez parametr 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. Wymaga również, aby elementy daty i godziny w s były wyświetlane w kolejności określonej przez format.It also requires that the date and time elements in s appear in the order specified by format. Jeśli s nie pasuje do wzorca parametru format, z wszelkimi zmiennościmi zdefiniowanymi przez style parametr, metoda zgłasza 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. Z kolei Metoda DateTime.Parse(String, IFormatProvider, DateTimeStyles) analizuje ciąg reprezentujący datę w dowolnym formacie rozpoznawanym przez obiekt DateTimeFormatInfo dostawcy formatowania.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. Metoda DateTime.Parse(String, IFormatProvider, DateTimeStyles) umożliwia również elementom daty i godziny w s być wyświetlane w dowolnej kolejności.The DateTime.Parse(String, IFormatProvider, DateTimeStyles) method also allows the date and time elements in s to appear in any order.

Jeśli parametr s zawiera tylko godzinę i brak daty, bieżąca data jest używana, chyba że parametr style zawiera flagę DateTimeStyles.NoCurrentDateDefault, w tym przypadku jest używana domyślna Data (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. Jeśli parametr s zawiera tylko datę i godzinę, używana jest północ (00:00:00).If the s parameter contains only a date and no time, midnight (00:00:00) is used. style parametr określa również, czy parametr s może zawierać znaki wiodące, wewnętrzne lub końcowe.The style parameter also determines whether the s parameter can contain leading, inner, or trailing white space characters.

Jeśli s nie zawiera informacji o strefie czasowej, właściwość Kind zwróconego obiektu DateTime jest DateTimeKind.Unspecified.If s contains no time zone information, the Kind property of the returned DateTime object is DateTimeKind.Unspecified. To zachowanie można zmienić przy użyciu flagi DateTimeStyles.AssumeLocal, która zwraca DateTime wartość, której Właściwość Kind jest DateTimeKind.Local, lub za pomocą flag DateTimeStyles.AssumeUniversal i DateTimeStyles.AdjustToUniversal, która zwraca wartość DateTime, której Właściwość Kind jest 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. Jeśli s zawiera informacje o strefie czasowej, czas jest konwertowany na czas lokalny, w razie potrzeby, a właściwość Kind zwróconego obiektu DateTime jest ustawiona na 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. To zachowanie można zmienić przy użyciu flagi DateTimeStyles.RoundtripKind, aby nie skonwertować uniwersalnego czasu koordynowanego (UTC) na czas lokalny i ustawić właściwość Kind na 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.

Parametr format definiuje wymagany wzorzec parametru s.The format parameter defines the required pattern of the s parameter. Może składać się z co najmniej jednego specyfikatora formatu niestandardowego z tabeli ciągów niestandardowych formatów daty i godziny lub pojedynczego specyfikatora formatu standardowego, który identyfikuje wstępnie zdefiniowany wzorzec, z tabeli ciągów standardowych formatów daty i godziny .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.

Jeśli nie używasz separatorów daty lub godziny w wzorcu formatu niestandardowego, użyj niezmiennej kultury dla parametru provider i najszerszej formy każdego niestandardowego specyfikatora formatu.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. Jeśli chcesz określić na przykład godziny we wzorcu, użyj szerszej formy „GG” zamiast węższej „G”.For example, if you want to specify hours in the pattern, specify the wider form, "HH", instead of the narrower form, "H".

Uwaga

Nie wymaga to, aby s był zgodny z pojedynczym formatem dla operacji analizowania, można wywołać metodę DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) i określić wiele dozwolonych formatów.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. Powoduje to, że operacja analizy będzie bardziej niemożliwa.This makes the parse operation more likely to succeed.

Parametr styles zawiera co najmniej jeden element członkowski DateTimeStyles Enumeration, który określa, czy i gdzie biały znak niezdefiniowany przez format może być wyświetlany w s i kontroluje precyzyjne zachowanie operacji analizy.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. W poniższej tabeli opisano sposób, w jaki każdy element członkowski wyliczenia DateTimeStyles ma wpływ na działanie metody 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.

Element członkowski DateTimeStylesDateTimeStyles member OpisDescription
AdjustToUniversal Analizuje s i, w razie potrzeby, konwertuje ją na czas UTC.Parses s and, if necessary, converts it to UTC. Jeśli s obejmuje przesunięcie strefy czasowej lub jeśli s nie zawiera informacji o strefie czasowej, ale styles zawiera flagę DateTimeStyles.AssumeLocal, Metoda analizuje ciąg, wywołuje ToUniversalTime, aby skonwertować zwróconą DateTime wartość na czas UTC i ustawi właściwość Kind na 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. Jeśli s wskazuje, że reprezentuje czas UTC lub jeśli s nie zawiera informacji o strefie czasowej, ale styles zawiera flagę DateTimeStyles.AssumeUniversal, Metoda analizuje ciąg, nie wykonuje konwersji strefy czasowej w zwracanej wartości DateTime i ustawia właściwość Kind na 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. We wszystkich innych przypadkach flaga nie wywiera żadnego wpływu.In all other cases, the flag has no effect.
AllowInnerWhite Określa, że biały znak niezdefiniowany przez format może pojawić się między dowolnym pojedynczym elementem daty lub godziny.Specifies that white space not defined by format can appear between any individual date or time element.
AllowLeadingWhite Określa, że biały znak niezdefiniowany przez format może pojawić się na początku s.Specifies that white space not defined by format can appear at the beginning of s.
AllowTrailingWhite Określa, że biały znak niezdefiniowany przez format może pojawić się na końcu s.Specifies that white space not defined by format can appear at the end of s.
AllowWhiteSpaces Określa, że s mogą zawierać wiodące, wewnętrzne i końcowe białe znaki, które nie są zdefiniowane przez format.Specifies that s may contain leading, inner, and trailing white spaces not defined by format.
AssumeLocal Określa, że jeśli s nie zawiera żadnych informacji o strefie czasowej, zakłada się, że jest to godzina lokalna.Specifies that if s lacks any time zone information, it is assumed to represent a local time. Jeśli flaga DateTimeStyles.AdjustToUniversal nie istnieje, właściwość Kind zwróconej wartości DateTime jest ustawiona na DateTimeKind.Local.Unless the DateTimeStyles.AdjustToUniversal flag is present, the Kind property of the returned DateTime value is set to DateTimeKind.Local.
AssumeUniversal Określa, że jeśli s nie zawiera żadnych informacji o strefie czasowej, zakłada się, że reprezentuje czas UTC.Specifies that if s lacks any time zone information, it is assumed to represent UTC. Jeśli flaga DateTimeStyles.AdjustToUniversal nie jest obecna, Metoda konwertuje zwróconą wartość DateTime z czasu UTC na czas lokalny i ustawi jej Właściwość Kind na 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 Jeśli s zawiera czas bez informacji o dacie, Data wartości zwracanej jest ustawiana na DateTime.MinValue.Date.If s contains time without date information, the date of the return value is set to DateTime.MinValue.Date.
None Parametr s jest analizowany przy użyciu wartości domyślnych.The s parameter is parsed using default values. Nie jest dozwolone żadne białe miejsce inne niż obecne w format.No white space other than that present in format is allowed. Jeśli s nie ma składnika Date, Data zwróconej DateTime wartości jest ustawiona na 1/1/0001.If s lacks a date component, the date of the returned DateTime value is set to 1/1/0001. Jeśli s nie zawiera informacji o strefie czasowej, właściwość Kind zwróconego obiektu DateTime jest ustawiona na DateTimeKind.Unspecified.If s contains no time zone information, the Kind property of the returned DateTime object is set to DateTimeKind.Unspecified. Jeśli informacje o strefie czasowej są obecne w s, czas jest konwertowany na czas lokalny, a właściwość Kind zwróconego obiektu DateTime jest ustawiona na 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 W przypadku ciągów zawierających informacje o strefie czasowej program próbuje zapobiec konwersji do DateTime wartości daty i godziny z właściwością Kind ustawioną na 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. Ta flaga zapobiega przede wszystkim konwersji czasu UTC na czas lokalny.This flag primarily prevents the conversion of UTC times to local times.

Określone symbole daty i godziny oraz ciągi (takie jak nazwy dni tygodnia w określonym języku) używane w s są definiowane przez parametr provider, tak s jak w przypadku, gdy format jest ciągiem specyfikatora formatu standardowego.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. Parametr provider może być dowolną z następujących:The provider parameter can be any of the following:

Jeśli provider jest null, używany jest obiekt CultureInfo, który odpowiada bieżącej kulturze.If provider is null, the CultureInfo object that corresponds to the current culture is used.

Uwagi dotyczące wywoływania

W Program .NET Framework 4.NET Framework 4Metoda ParseExact zgłasza FormatException, jeśli ciąg, który ma być analizowany, zawiera składnik godziny i oznaczenie AM/PM, które nie są zawarte w umowie.In the Program .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. W Program .NET Framework 3,5.NET Framework 3.5 i starszych wersjach oznaczenie AM/PM jest ignorowane.In the Program .NET Framework 3,5.NET Framework 3.5 and earlier versions, the AM/PM designator is ignored.

Zobacz też

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

Konwertuje określony ciąg reprezentujący datę i godzinę do DateTime odpowiednika przy użyciu określonej tablicy formatów, informacji o formacie specyficznym dla kultury i stylu.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. Format ciągu reprezentującego musi dokładnie pasować do co najmniej jednego z określonych formatów lub został zgłoszony wyjątek.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

Parametry

s
String

Ciąg zawierający datę i godzinę, które należy przekształcić.A string that contains a date and time to convert.

formats
String[]

Tablica dozwolonych formatów s.An array of allowable formats of s. Aby uzyskać więcej informacji, zobacz sekcję: Uwagi.For more information, see the Remarks section.

provider
IFormatProvider

Obiekt, który dostarcza informacje o formacie specyficznym dla kultury dotyczące s.An object that supplies culture-specific format information about s.

style
DateTimeStyles

Bitowa kombinacja wartości wyliczenia wskazująca dozwolony format s.A bitwise combination of enumeration values that indicates the permitted format of s. Typową wartością do określenia jest None.A typical value to specify is None.

Zwraca

Obiekt, który jest równoważny dacie i godzinie zawartej w s, określony przez formats, provideri style.An object that is equivalent to the date and time contained in s, as specified by formats, provider, and style.

Wyjątki

nulls lub formats.s or formats is null.

s jest ciągiem pustym.s is an empty string.

— lub —-or- element formats jest pustym ciągiem.an element of formats is an empty string.

— lub —-or- s nie zawiera daty i godziny odpowiadającej elementowi formats.s does not contain a date and time that corresponds to any element of formats.

— lub —-or- Składnik godziny i oznaczenie "AM/PM" w s nie zgadzają się.The hour component and the AM/PM designator in s do not agree.

style zawiera nieprawidłową kombinację wartości DateTimeStyles.style contains an invalid combination of DateTimeStyles values. Na przykład zarówno AssumeLocal, jak i AssumeUniversal.For example, both AssumeLocal and AssumeUniversal.

Przykłady

W poniższym przykładzie zastosowano metodę DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles), aby upewnić się, że można pomyślnie przeanalizować ciąg w wielu możliwych formatach.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.

Uwagi

Metoda DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) analizuje ciąg reprezentujący datę, która pasuje do dowolnego z wzorców przypisanych do parametru 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. Jeśli ciąg s nie pasuje do żadnego z tych wzorców ze wszystkimi odmianami zdefiniowanymi przez parametr styles, metoda zgłasza 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. Poza porównaniem s z wieloma wzorcami formatowania, a nie z pojedynczym wzorcem formatowania, Przeciążenie zachowuje się identycznie z metodą 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.

Parametr s zawiera datę i godzinę do przeanalizowania.The s parameter contains the date and time to parse. Jeśli parametr s zawiera tylko godzinę i brak daty, bieżąca data jest używana, chyba że parametr style zawiera flagę DateTimeStyles.NoCurrentDateDefault, w tym przypadku jest używana domyślna Data (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. Jeśli parametr s zawiera tylko datę i godzinę, używana jest północ (00:00:00).If the s parameter contains only a date and no time, midnight (00:00:00) is used. style parametr określa również, czy parametr s może zawierać znaki wiodące, wewnętrzne lub końcowe, inne niż dozwolone przez jeden z ciągów formatu w 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.

Jeśli s nie zawiera informacji o strefie czasowej, właściwość Kind zwróconego obiektu DateTime jest DateTimeKind.Unspecified.If s contains no time zone information, the Kind property of the returned DateTime object is DateTimeKind.Unspecified. To zachowanie można zmienić przy użyciu flagi DateTimeStyles.AssumeLocal, która zwraca DateTime wartość, której Właściwość Kind jest DateTimeKind.Local, lub za pomocą flag DateTimeStyles.AssumeUniversal i DateTimeStyles.AdjustToUniversal, która zwraca wartość DateTime, której Właściwość Kind jest 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. Jeśli s zawiera informacje o strefie czasowej, czas jest konwertowany na czas lokalny, w razie potrzeby, a właściwość Kind zwróconego obiektu DateTime jest ustawiona na 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. To zachowanie można zmienić przy użyciu flagi DateTimeStyles.RoundtripKind, aby nie skonwertować uniwersalnego czasu koordynowanego (UTC) na czas lokalny i ustawić właściwość Kind na 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.

Parametr formats zawiera tablicę wzorców, z których jeden s musi być zgodny dokładnie w przypadku powodzenia operacji analizy.The formats parameter contains an array of patterns, one of which s must match exactly if the parse operation is to succeed. Wzorce w parametrze formats składają się z co najmniej jednego specyfikatora formatu niestandardowego z tabeli ciągów niestandardowych formatów daty i godziny lub pojedynczego specyfikatora formatu standardowego, który identyfikuje wstępnie zdefiniowany wzorzec, z tabeli ciągów standardowego formatu daty i godziny .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.

Jeśli nie używasz separatorów daty lub godziny w wzorcu formatu niestandardowego, użyj niezmiennej kultury dla parametru provider i najszerszej formy każdego niestandardowego specyfikatora formatu.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. Jeśli chcesz określić na przykład godziny we wzorcu, użyj szerszej formy „GG” zamiast węższej „G”.For example, if you want to specify hours in the pattern, specify the wider form, "HH", instead of the narrower form, "H".

Parametr styles zawiera co najmniej jeden element członkowski DateTimeStyles Enumeration, który określa, czy i gdzie biały znak niezdefiniowany przez format może być wyświetlany w s i kontroluje precyzyjne zachowanie operacji analizy.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. W poniższej tabeli opisano sposób, w jaki każdy element członkowski wyliczenia DateTimeStyles ma wpływ na działanie metody 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.

Element członkowski DateTimeStylesDateTimeStyles member OpisDescription
AdjustToUniversal Analizuje s i, w razie potrzeby, konwertuje ją na czas UTC.Parses s and, if necessary, converts it to UTC. Jeśli s obejmuje przesunięcie strefy czasowej lub jeśli s nie zawiera informacji o strefie czasowej, ale styles zawiera flagę DateTimeStyles.AssumeLocal, Metoda analizuje ciąg, wywołuje ToUniversalTime, aby skonwertować zwróconą DateTime wartość na czas UTC i ustawi właściwość Kind na 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. Jeśli s wskazuje, że reprezentuje czas UTC lub jeśli s nie zawiera informacji o strefie czasowej, ale styles zawiera flagę DateTimeStyles.AssumeUniversal, Metoda analizuje ciąg, nie wykonuje konwersji strefy czasowej w zwracanej wartości DateTime i ustawia właściwość Kind na 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. We wszystkich innych przypadkach flaga nie wywiera żadnego wpływu.In all other cases, the flag has no effect.
AllowInnerWhite Określa, że biały znak niezdefiniowany przez format może pojawić się między dowolnym pojedynczym elementem daty lub godziny.Specifies that white space not defined by format can appear between any individual date or time element.
AllowLeadingWhite Określa, że biały znak niezdefiniowany przez format może pojawić się na początku s.Specifies that white space not defined by format can appear at the beginning of s.
AllowTrailingWhite Określa, że biały znak niezdefiniowany przez format może pojawić się na końcu s.Specifies that white space not defined by format can appear at the end of s.
AllowWhiteSpaces Określa, że s mogą zawierać wiodące, wewnętrzne i końcowe białe znaki, które nie są zdefiniowane przez format.Specifies that s may contain leading, inner, and trailing white spaces not defined by format.
AssumeLocal Określa, że jeśli s nie zawiera żadnych informacji o strefie czasowej, zakłada się, że jest to godzina lokalna.Specifies that if s lacks any time zone information, it is assumed to represent a local time. Jeśli flaga DateTimeStyles.AdjustToUniversal nie istnieje, właściwość Kind zwróconej wartości DateTime jest ustawiona na DateTimeKind.Local.Unless the DateTimeStyles.AdjustToUniversal flag is present, the Kind property of the returned DateTime value is set to DateTimeKind.Local.
AssumeUniversal Określa, że jeśli s nie zawiera żadnych informacji o strefie czasowej, zakłada się, że reprezentuje czas UTC.Specifies that if s lacks any time zone information, it is assumed to represent UTC. Jeśli flaga DateTimeStyles.AdjustToUniversal nie jest obecna, Metoda konwertuje zwróconą wartość DateTime z czasu UTC na czas lokalny i ustawi jej Właściwość Kind na 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 Jeśli s zawiera czas bez informacji o dacie, Data wartości zwracanej jest ustawiana na DateTime.MinValue.Date.If s contains time without date information, the date of the return value is set to DateTime.MinValue.Date.
None Parametr s jest analizowany przy użyciu wartości domyślnych.The s parameter is parsed using default values. Nie jest dozwolone żadne białe miejsce inne niż obecne w format.No white space other than that present in format is allowed. Jeśli s nie ma składnika Date, Data zwróconej DateTime wartości jest ustawiona na 1/1/0001.If s lacks a date component, the date of the returned DateTime value is set to 1/1/0001. Jeśli s nie zawiera informacji o strefie czasowej, właściwość Kind zwróconego obiektu DateTime jest ustawiona na DateTimeKind.Unspecified.If s contains no time zone information, the Kind property of the returned DateTime object is set to DateTimeKind.Unspecified. Jeśli informacje o strefie czasowej są obecne w s, czas jest konwertowany na czas lokalny, a właściwość Kind zwróconego obiektu DateTime jest ustawiona na 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 W przypadku ciągów zawierających informacje o strefie czasowej program próbuje zapobiec konwersji na datę i godzinę z właściwością Kind ustawioną na 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. Ta flaga zapobiega przede wszystkim konwersji czasu UTC na czas lokalny.This flag primarily prevents the conversion of UTC times to local times.

Określone symbole daty i godziny oraz ciągi (takie jak nazwy dni tygodnia w określonym języku) używane w s są definiowane przez parametr provider, tak s jak w przypadku, gdy format jest ciągiem specyfikatora formatu standardowego.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. Parametr provider może być dowolną z następujących:The provider parameter can be any of the following:

Jeśli provider jest null, używany jest obiekt CultureInfo, który odpowiada bieżącej kulturze.If provider is null, the CultureInfo object that corresponds to the current culture is used.

Uwagi dotyczące wywoływania

W Program .NET Framework 4.NET Framework 4Metoda ParseExact zgłasza FormatException, jeśli ciąg, który ma być analizowany, zawiera składnik godziny i oznaczenie AM/PM, które nie są zawarte w umowie.In the Program .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. W Program .NET Framework 3,5.NET Framework 3.5 i starszych wersjach oznaczenie AM/PM jest ignorowane.In the Program .NET Framework 3,5.NET Framework 3.5 and earlier versions, the AM/PM designator is ignored.

Zobacz też

Dotyczy