DateTimeOffset.ParseExact Metoda

Definicja

Konwertuje określony ciąg reprezentujący datę i godzinę na jego odpowiednik DateTimeOffset.Converts the specified string representation of a date and time to its DateTimeOffset equivalent. Format ciągu reprezentującego musi dokładnie pasować do wskazanego formatu.The format of the string representation must match a specified format exactly.

Przeciążenia

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

Konwertuje określony ciąg reprezentujący datę i godzinę do DateTimeOffset odpowiednika przy użyciu określonych formatów, informacji o formacie specyficznym dla kultury i stylu.Converts the specified string representation of a date and time to its DateTimeOffset equivalent using the specified formats, culture-specific format information, and style. Format ciągu reprezentującego musi dokładnie pasować do jednego ze wskazanych formatów.The format of the string representation must match one of the specified formats exactly.

ParseExact(String, String, IFormatProvider, DateTimeStyles)

Konwertuje określony ciąg reprezentujący datę i godzinę do DateTimeOffset 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 DateTimeOffset equivalent using the specified format, culture-specific format information, and style. 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 zakres znaków, który reprezentuje datę i godzinę do DateTimeOffset odpowiednika przy użyciu określonego formatu, informacji o formacie specyficznym dla kultury i stylu.Converts a character span that represents a date and time to its DateTimeOffset equivalent using the specified format, culture-specific format information, and style. Format reprezentujący datę i godzinę musi być dokładnie zgodny z określonym formatem.The format of the date and time representation must match the specified format exactly.

ParseExact(String, String, IFormatProvider)

Konwertuje określony ciąg reprezentujący datę i godzinę do DateTimeOffset 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 DateTimeOffset 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>, String[], IFormatProvider, DateTimeStyles)

Konwertuje zakres znaków, który zawiera ciąg reprezentujący datę i godzinę do jego DateTimeOffset odpowiednika przy użyciu określonych formatów, informacji o formacie specyficznym dla kultury i stylu.Converts a character span that contains the string representation of a date and time to its DateTimeOffset equivalent using the specified formats, culture-specific format information, and style. Format reprezentujący datę i godzinę musi dokładnie odpowiadać jednemu z określonych formatów.The format of the date and time representation must match one of the specified formats exactly.

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

Konwertuje określony ciąg reprezentujący datę i godzinę do DateTimeOffset odpowiednika przy użyciu określonych formatów, informacji o formacie specyficznym dla kultury i stylu.Converts the specified string representation of a date and time to its DateTimeOffset equivalent using the specified formats, culture-specific format information, and style. Format ciągu reprezentującego musi dokładnie pasować do jednego ze wskazanych formatów.The format of the string representation must match one of the specified formats exactly.

public:
 static DateTimeOffset ParseExact(System::String ^ input, cli::array <System::String ^> ^ formats, IFormatProvider ^ formatProvider, System::Globalization::DateTimeStyles styles);
public static DateTimeOffset ParseExact (string input, string[] formats, IFormatProvider formatProvider, System.Globalization.DateTimeStyles styles);
static member ParseExact : string * string[] * IFormatProvider * System.Globalization.DateTimeStyles -> DateTimeOffset
Public Shared Function ParseExact (input As String, formats As String(), formatProvider As IFormatProvider, styles As DateTimeStyles) As DateTimeOffset

Parametry

input
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 specyfikatorów formatu, które definiują oczekiwane formaty input.An array of format specifiers that define the expected formats of input.

formatProvider
IFormatProvider

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

styles
DateTimeStyles

Bitowa kombinacja wartości wyliczenia wskazująca dozwolony format input.A bitwise combination of enumeration values that indicates the permitted format of input.

Zwraca

DateTimeOffset

Obiekt, który jest równoznaczny z datą i godziną, która jest zawarta w parametrze input, określony przez parametry formats, formatProvideri styles.An object that is equivalent to the date and time that is contained in the input parameter, as specified by the formats, formatProvider, and styles parameters.

Wyjątki

Przesunięcie jest większe niż 14 godzin lub mniejsze niż-14 godzin.The offset is greater than 14 hours or less than -14 hours.

— lub —-or- styles zawiera nieobsługiwaną wartość.styles includes an unsupported value.

— lub —-or- Parametr styles zawiera wartości DateTimeStyles, które nie mogą być używane razem.The styles parameter contains DateTimeStyles values that cannot be used together.

Parametr input ma wartość null.input is null.

input jest pustym ciągiem ("").input is an empty string ("").

— lub —-or- input nie zawiera prawidłowej reprezentacji ciągu daty i godziny.input does not contain a valid string representation of a date and time.

— lub —-or- Żaden element formats nie zawiera prawidłowego specyfikatora formatu.No element of formats contains a valid format specifier.

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

Przykłady

W poniższym przykładzie zdefiniowano wiele formatów danych wejściowych dla ciągu reprezentującego datę i godzinę oraz wartość przesunięcia, a następnie przekazuje ciąg wprowadzony przez użytkownika do metody DateTimeOffset.ParseExact(String, String[], IFormatProvider, DateTimeStyles).The following example defines multiple input formats for the string representation of a date and time and offset value, and then passes the string that is entered by the user to the DateTimeOffset.ParseExact(String, String[], IFormatProvider, DateTimeStyles) method.

TextReader conIn = Console.In;
TextWriter conOut = Console.Out;
int tries = 0;
string input = String.Empty;
string[] formats = new string[] {@"@M/dd/yyyy HH:m zzz", @"MM/dd/yyyy HH:m zzz",
                                 @"M/d/yyyy HH:m zzz", @"MM/d/yyyy HH:m zzz",
                                 @"M/dd/yy HH:m zzz", @"MM/dd/yy HH:m zzz",
                                 @"M/d/yy HH:m zzz", @"MM/d/yy HH:m zzz",
                                 @"M/dd/yyyy H:m zzz", @"MM/dd/yyyy H:m zzz",
                                 @"M/d/yyyy H:m zzz", @"MM/d/yyyy H:m zzz",
                                 @"M/dd/yy H:m zzz", @"MM/dd/yy H:m zzz",
                                 @"M/d/yy H:m zzz", @"MM/d/yy H:m zzz",
                                 @"M/dd/yyyy HH:mm zzz", @"MM/dd/yyyy HH:mm zzz",
                                 @"M/d/yyyy HH:mm zzz", @"MM/d/yyyy HH:mm zzz",
                                 @"M/dd/yy HH:mm zzz", @"MM/dd/yy HH:mm zzz",
                                 @"M/d/yy HH:mm zzz", @"MM/d/yy HH:mm zzz",
                                 @"M/dd/yyyy H:mm zzz", @"MM/dd/yyyy H:mm zzz",
                                 @"M/d/yyyy H:mm zzz", @"MM/d/yyyy H:mm zzz",
                                 @"M/dd/yy H:mm zzz", @"MM/dd/yy H:mm zzz",
                                 @"M/d/yy H:mm zzz", @"MM/d/yy H:mm zzz"};
IFormatProvider provider = CultureInfo.InvariantCulture.DateTimeFormat;
DateTimeOffset result = new DateTimeOffset();

do {
   conOut.WriteLine("Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),");
   conOut.Write("Then press Enter: ");
   input = conIn.ReadLine();
   conOut.WriteLine();
   try
   {
      result = DateTimeOffset.ParseExact(input, formats, provider,
                                         DateTimeStyles.AllowWhiteSpaces);
      break;
   }
   catch (FormatException)
   {
      Console.WriteLine("Unable to parse {0}.", input);
      tries++;
   }
} while (tries < 3);
if (tries >= 3)
   Console.WriteLine("Exiting application without parsing {0}", input);
else
   Console.WriteLine("{0} was converted to {1}", input, result.ToString());
// Some successful sample interactions with the user might appear as follows:
//    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
//    Then press Enter: 12/08/2007 6:54 -6:00
//
//    12/08/2007 6:54 -6:00 was converted to 12/8/2007 6:54:00 AM -06:00
//
//    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
//    Then press Enter: 12/8/2007 06:54 -06:00
//
//    12/8/2007 06:54 -06:00 was converted to 12/8/2007 6:54:00 AM -06:00
//
//    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
//    Then press Enter: 12/5/07 6:54 -6:00
//
//    12/5/07 6:54 -6:00 was converted to 12/5/2007 6:54:00 AM -06:00
 Dim conIn As TextReader = Console.In
 Dim conOut As TextWriter = Console.Out
 Dim tries As Integer = 0
 Dim input As String = String.Empty
 Dim formats() As String = {"M/dd/yyyy HH:m zzz", "MM/dd/yyyy HH:m zzz", _
                            "M/d/yyyy HH:m zzz", "MM/d/yyyy HH:m zzz", _
                            "M/dd/yy HH:m zzz", "MM/dd/yy HH:m zzz", _
                            "M/d/yy HH:m zzz", "MM/d/yy HH:m zzz", _                                 
                            "M/dd/yyyy H:m zzz", "MM/dd/yyyy H:m zzz", _
                            "M/d/yyyy H:m zzz", "MM/d/yyyy H:m zzz", _
                            "M/dd/yy H:m zzz", "MM/dd/yy H:m zzz", _
                            "M/d/yy H:m zzz", "MM/d/yy H:m zzz", _                               
                            "M/dd/yyyy HH:mm zzz", "MM/dd/yyyy HH:mm zzz", _
                            "M/d/yyyy HH:mm zzz", "MM/d/yyyy HH:mm zzz", _
                            "M/dd/yy HH:mm zzz", "MM/dd/yy HH:mm zzz", _
                            "M/d/yy HH:mm zzz", "MM/d/yy HH:mm zzz", _                                 
                            "M/dd/yyyy H:mm zzz", "MM/dd/yyyy H:mm zzz", _
                            "M/d/yyyy H:mm zzz", "MM/d/yyyy H:mm zzz", _
                            "M/dd/yy H:mm zzz", "MM/dd/yy H:mm zzz", _
                            "M/d/yy H:mm zzz", "MM/d/yy H:mm zzz"}   
 Dim provider As IFormatProvider = CultureInfo.InvariantCulture.DateTimeFormat
 Dim result As DateTimeOffset

 Do 
    conOut.WriteLine("Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),")
    conOut.Write("Then press Enter: ")
    input = conIn.ReadLine()
    conOut.WriteLine() 
    Try
       result = DateTimeOffset.ParseExact(input, formats, provider, _
                                          DateTimeStyles.AllowWhiteSpaces)
       Exit Do
    Catch e As FormatException
       Console.WriteLine("Unable to parse {0}.", input)      
       tries += 1
    End Try
 Loop While tries < 3
 If tries >= 3 Then
    Console.WriteLine("Exiting application without parsing {0}", input)
 Else
    Console.WriteLine("{0} was converted to {1}", input, result.ToString())                                                     
 End If 
 ' Some successful sample interactions with the user might appear as follows:
 '    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
 '    Then press Enter: 12/08/2007 6:54 -6:00
 '    
 '    12/08/2007 6:54 -6:00 was converted to 12/8/2007 6:54:00 AM -06:00         
 '    
 '    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
 '    Then press Enter: 12/8/2007 06:54 -06:00
 '    
 '    12/8/2007 06:54 -06:00 was converted to 12/8/2007 6:54:00 AM -06:00
 '    
 '    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
 '    Then press Enter: 12/5/07 6:54 -6:00
 '    
 '    12/5/07 6:54 -6:00 was converted to 12/5/2007 6:54:00 AM -06:00 

Uwagi

Metoda DateTimeOffset.ParseExact(String, String[], IFormatProvider, DateTimeStyles) analizuje ciąg reprezentujący datę, która pasuje do dowolnego z wzorców przypisanych do parametru formats.The DateTimeOffset.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 input nie pasuje do żadnego z tych wzorców z żadną różnicą zdefiniowaną przez parametr styles, metoda zgłasza FormatException.If the input string 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 input z wieloma wzorcami formatowania to Przeciążenie zachowuje się identycznie z metodą DateTimeOffset.ParseExact(String, String, IFormatProvider, DateTimeStyles).Aside from comparing input to multiple formatting patterns, this overload behaves identically to the DateTimeOffset.ParseExact(String, String, IFormatProvider, DateTimeStyles) method.

formats parametr jest tablicą ciągów, której elementy zawierają pojedynczy specyfikator formatu standardowego lub jeden lub więcej niestandardowych specyfikatorów formatu, które definiują możliwy wzorzec parametru input.The formats parameter is a string array whose elements contain either a single standard format specifier or one or more custom format specifiers that define the possible pattern of the input parameter. Gdy metoda jest wywoływana, input musi być zgodna z jednym z tych wzorców.When the method is called, input must match one of these patterns. Aby uzyskać szczegółowe informacje na temat prawidłowych kodów formatowania, zobacz ciągi standardowego formatu daty i godziny oraz Niestandardowe ciągi formatujące datę i godzinę.For details about valid formatting codes, see Standard Date and Time Format Strings and Custom Date and Time Format Strings. Jeśli dopasowany element w formats zawiera specyfikatory formatu niestandardowego z, zzlub zzz, aby wskazać, że przesunięcie musi być obecne w input, przesunięcie musi zawierać znak minus lub znak dodatni.If the matched element in formats includes the z, zz, or zzz custom format specifiers to indicate that an offset must be present in input, that offset must include either a negative sign or a positive sign. Jeśli brakuje znaku, Metoda zgłosi FormatException.If the sign is missing, the method throws a FormatException.

Ważne

Użycie parametru formats tego przeciążenia w celu określenia wielu formatów może pomóc w zmniejszeniu frustrację wielu użytkowników podczas wprowadzania dat i godzin.Using the formats parameter of this overload to specify multiple formats can help reduce the frustration many users experience when they enter dates and times. W szczególności możliwość zdefiniowania wielu wzorców danych wejściowych umożliwia aplikacji obsługę prezentacji daty i godziny, które mogą zawierać lub nie mieć wiodących zer w miesiącach, dniach, godzinach, minutach i sekundach.In particular, the ability to define multiple input patterns enables an application to handle date and time representations that can either include or lack leading zeros in months, days, hours, minutes, and seconds. Przykład zawiera ilustrację.The example provides an illustration of this.

Jeśli dopasowany element w formats wymaga, aby input zawierać datę, ale nie czas, a otrzymany obiekt DateTimeOffset ma przypisany czas północy (0:00:00).If the matched element in formats requires that input contain a date but not a time, the resulting DateTimeOffset object is assigned a time of midnight (0:00:00). Jeśli dopasowany element w formats wymaga, aby input zawierać godzinę, ale nie datę, a otrzymany obiekt DateTimeOffset jest przypisany do bieżącej daty w systemie lokalnym.If the matched element in formats requires that input contain a time but not a date, the resulting DateTimeOffset object is assigned the current date on the local system. Jeśli dopasowany element w formats nie wymaga, aby input zawierać przesunięcie, przesunięcie powstającego obiektu DateTimeOffset zależy od wartości parametru styles.If the matched element in formats does not require that input contain an offset, the offset of the resulting DateTimeOffset object depends on the value of the styles parameter. Jeśli styles zawiera AssumeLocal, przesunięcie lokalnej strefy czasowej zostanie przypisane do obiektu DateTimeOffset.If styles includes AssumeLocal, the offset of the local time zone is assigned to the DateTimeOffset object. Jeśli styles zawiera AssumeUniversal, przesunięcie uniwersalnego czasu koordynowanego (UTC) lub + 00:00 jest przypisane do obiektu DateTimeOffset.If styles includes AssumeUniversal, the Coordinated Universal Time (UTC) offset, or +00:00, is assigned to the DateTimeOffset object. Jeśli żadna wartość nie jest określona, używane jest przesunięcie lokalnej strefy czasowej.If neither value is specified, the offset of the local time zone is used.

Określone symbole daty i godziny oraz ciągi używane w input są definiowane przez parametr formatProvider.The particular date and time symbols and strings used in input are defined by the formatProvider parameter. To samo jest prawdziwe w przypadku precyzyjnego formatu input, jeśli pasujący element formats jest ciągiem specyfikatora formatu standardowego.The same is true for the precise format of input, if the matching element of formats is a standard format specifier string. Parametr formatProvider może mieć jedną z następujących wartości:The formatProvider parameter can be either of the following:

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

Parametr styles określa, czy biały znak jest dozwolony w ciągu wejściowym, wskazuje, jak ciągi bez jawnego składnika przesunięcia są analizowane i obsługuje konwersję czasu UTC w ramach operacji analizowania.The styles parameter defines whether white space is permitted in the input string, indicates how strings without an explicit offset component are parsed, and supports UTC conversion as part of the parsing operation. Wszystkie elementy członkowskie wyliczenia DateTimeStyles są obsługiwane z wyjątkiem NoCurrentDateDefault.All members of the DateTimeStyles enumeration are supported except NoCurrentDateDefault. Poniższa tabela zawiera listę działania każdego z obsługiwanych elementów członkowskich.The following table lists the effect of each supported member.

DateTimeStyles składowąDateTimeStyles member ZachowanieBehavior
AdjustToUniversal Analizuje input i, w razie potrzeby, konwertuje ją na czas UTC.Parses input and, if necessary, converts it to UTC. Jest on równoznaczny z analizowaniem ciągu, a następnie wywołaniem metody DateTimeOffset.ToUniversalTime zwróconego obiektu DateTimeOffset.It is equivalent to parsing a string, and then calling the DateTimeOffset.ToUniversalTime method of the returned DateTimeOffset object.
AssumeLocal Jeśli dopasowany element w formats nie wymaga, aby input zawierać wartość przesunięcia, zwracany obiekt DateTimeOffset otrzymuje przesunięcie lokalnej strefy czasowej.If the matched element in formats does not require that input contain an offset value, the returned DateTimeOffset object is given the offset of the local time zone. Jest to wartość domyślna.This is the default value.
AssumeUniversal Jeśli dopasowany element w formats nie wymaga, aby input zawierać wartość przesunięcia, zwracany obiekt DateTimeOffset ma przesunięcie czasu UTC (+ 00:00).If the matched element in formats does not require that input contain an offset value, the returned DateTimeOffset object is given the UTC offset (+00:00).
AllowInnerWhite Zezwala input na uwzględnienie wewnętrznego odstępu, który nie jest określony przez format.Allows input to include inner white space not specified by format. Dodatkowe odstępy mogą pojawić się między składnikami daty i godziny i w obrębie poszczególnych składników (z wyjątkiem przesunięcia) i są ignorowane podczas analizowania ciągu.Extra white space can appear between date and time components and within individual components (except the offset), and is ignored when parsing the string.
AllowLeadingWhite Zezwala input na uwzględnienie spacji wiodących nieokreślonych przez formats.Allows input to include leading spaces not specified by formats. Są one ignorowane podczas analizowania ciągu.These are ignored when parsing the string.
AllowTrailingWhite Zezwala input na dołączenie spacji końcowych, które nie są określone przez formats.Allows input to include trailing spaces not specified by formats. Są one ignorowane podczas analizowania ciągu.These are ignored when parsing the string.
AllowWhiteSpaces Zezwala input na uwzględnienie spacji wiodących, końcowych i wewnętrznych, które nie są określone przez formats.Allows input to include leading, trailing, and inner spaces not specified by formats. Wszystkie dodatkowe znaki odstępu, które nie są określone w dopasowanym elemencie w formats są ignorowane podczas analizowania ciągu.All extra white-space characters not specified in the matched element in formats are ignored when parsing the string.
None Wskazuje, że dodatkowy biały znak nie jest dozwolony w input.Indicates that additional white space is not permitted in input. Biały znak musi być widoczny dokładnie tak, jak określono w określonym elemencie formats, aby nastąpiło dopasowanie.White space must appear exactly as specified in a particular element of formats for a match to occur. To zachowanie domyślne.This is the default behavior.
RoundtripKind Nie ma żadnego efektu, ponieważ struktura DateTimeOffset nie zawiera właściwości Kind.Has no effect because the DateTimeOffset structure does not include a Kind property.

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 .NET Framework 3.5.NET Framework 3.5 i starszych wersjach oznaczenie AM/PM jest ignorowane.In the .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 DateTimeOffset 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 DateTimeOffset equivalent using the specified format, culture-specific format information, and style. 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 DateTimeOffset ParseExact(System::String ^ input, System::String ^ format, IFormatProvider ^ formatProvider, System::Globalization::DateTimeStyles styles);
public static DateTimeOffset ParseExact (string input, string format, IFormatProvider formatProvider, System.Globalization.DateTimeStyles styles);
static member ParseExact : string * string * IFormatProvider * System.Globalization.DateTimeStyles -> DateTimeOffset
Public Shared Function ParseExact (input As String, format As String, formatProvider As IFormatProvider, styles As DateTimeStyles) As DateTimeOffset

Parametry

input
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 oczekiwany format input.A format specifier that defines the expected format of input.

formatProvider
IFormatProvider

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

styles
DateTimeStyles

Bitowa kombinacja wartości wyliczenia wskazująca dozwolony format input.A bitwise combination of enumeration values that indicates the permitted format of input.

Zwraca

DateTimeOffset

Obiekt, który jest równoznaczny z datą i godziną, która jest zawarta w parametrze input, określony przez parametry format, formatProvideri styles.An object that is equivalent to the date and time that is contained in the input parameter, as specified by the format, formatProvider, and styles parameters.

Wyjątki

Przesunięcie jest większe niż 14 godzin lub mniejsze niż-14 godzin.The offset is greater than 14 hours or less than -14 hours.

— lub —-or- Parametr styles zawiera nieobsługiwaną wartość.The styles parameter includes an unsupported value.

— lub —-or- Parametr styles zawiera wartości DateTimeStyles, które nie mogą być używane razem.The styles parameter contains DateTimeStyles values that cannot be used together.

Parametr input ma wartość null.input is null.

— lub —-or- Parametr format ma wartość null.format is null.

input jest pustym ciągiem ("").input is an empty string ("").

— lub —-or- input nie zawiera prawidłowej reprezentacji ciągu daty i godziny.input does not contain a valid string representation of a date and time.

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

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

Przykłady

W poniższym przykładzie użyto metody DateTimeOffset.ParseExact(String, String, IFormatProvider, DateTimeStyles) ze specyfikatorami formatu standardowego i niestandardowego, kulturą niezmienną oraz różnymi wartościami DateTimeStyles do analizowania kilku ciągów daty i godziny.The following example uses the DateTimeOffset.ParseExact(String, String, IFormatProvider, DateTimeStyles) method with standard and custom format specifiers, the invariant culture, and various DateTimeStyles values to parse several date and time strings.

string dateString, format;
DateTimeOffset result;
CultureInfo provider = CultureInfo.InvariantCulture;

// Parse date-only value with invariant culture and assume time is UTC.
dateString = "06/15/2008";
format = "d";
try
{
   result = DateTimeOffset.ParseExact(dateString, format, provider,
                                      DateTimeStyles.AssumeUniversal);
   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 with leading white space.
// Should throw a FormatException because only trailing white space is
// specified in method call.
dateString = " 06/15/2008";
try
{
   result = DateTimeOffset.ParseExact(dateString, format, provider,
                                      DateTimeStyles.AllowTrailingWhite);
   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 value, and allow all white space.
dateString = " 06/15/   2008  15:15    -05:00";
format = "MM/dd/yyyy H:mm zzz";
try
{
   result = DateTimeOffset.ParseExact(dateString, format, provider,
                                      DateTimeStyles.AllowWhiteSpaces);
   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 and convert to UTC.
dateString = "  06/15/2008 15:15:30 -05:00";
format = "MM/dd/yyyy H:mm:ss zzz";
try
{
   result = DateTimeOffset.ParseExact(dateString, format, provider,
                                      DateTimeStyles.AllowWhiteSpaces |
                                      DateTimeStyles.AdjustToUniversal);
   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 +00:00.
//    ' 06/15/2008' is not in the correct format.
//    ' 06/15/   2008  15:15    -05:00' converts to 6/15/2008 3:15:00 PM -05:00.
//    '  06/15/2008 15:15:30 -05:00' converts to 6/15/2008 8:15:30 PM +00:00.
Dim dateString, format As String  
Dim result As DateTimeOffset
Dim provider As CultureInfo = CultureInfo.InvariantCulture

' Parse date-only value with invariant culture and assume time is UTC.
dateString = "06/15/2008"
format = "d"
Try
   result = DateTimeOffset.ParseExact(dateString, format, provider, _
                                      DateTimeStyles.AssumeUniversal)
   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 with leading white space.
' Should throw a FormatException because only trailing white space is  
' specified in method call.
dateString = " 06/15/2008"
Try
   result = DateTimeOffset.ParseExact(dateString, format, provider, _
                                      DateTimeStyles.AllowTrailingWhite)
   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 value, and allow all white space.
dateString = " 06/15/   2008  15:15    -05:00"
format = "MM/dd/yyyy H:mm zzz"
Try
   result = DateTimeOffset.ParseExact(dateString, format, provider, _
                                      DateTimeStyles.AllowWhiteSpaces)
   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 and convert to UTC.
dateString = "  06/15/2008 15:15:30 -05:00"   
format = "MM/dd/yyyy H:mm:ss zzz"       
Try
   result = DateTimeOffset.ParseExact(dateString, format, provider, _
                                      DateTimeStyles.AllowWhiteSpaces Or _
                                      DateTimeStyles.AdjustToUniversal)
   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 
' The example displays the following output:
'    '06/15/2008' converts to 6/15/2008 12:00:00 AM +00:00.
'    ' 06/15/2008' is not in the correct format.
'    ' 06/15/   2008  15:15    -05:00' converts to 6/15/2008 3:15:00 PM -05:00.
'    '  06/15/2008 15:15:30 -05:00' converts to 6/15/2008 8:15:30 PM +00:00.

W poniższym przykładzie zastosowano różne wartości DateTimeStyles do analizy tablicy ciągów, które są zgodne z ISO 8601.The following example uses a variety of DateTimeStyles values to parse an array of strings that are expected to conform to ISO 8601. Dane wyjściowe z przykładu pokazują, że nie można przeanalizować ciągów, które są w odpowiednim formacie, jeśli:As the output from the example shows, strings that are in the proper format fail to parse if:

W przypadku ciągów, które nie określają przesunięcia czasu UTC, przyjmuje się, że przesunięcia lokalnej strefy czasowej (w tym przypadku-07:00), chyba że flaga DateTimeStyles.AssumeUniversal jest podana w wywołaniu metody.Strings that do not specify a UTC offset are assumed to have the offset of the local time zone (in this case, -07:00) unless the DateTimeStyles.AssumeUniversal flag is supplied in the method call. W takim przypadku zakłada się, że jest to uniwersalny czas koordynowany.In that case, they are assumed to be Universal Coordinated Time.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string[] dateStrings = { "2018-08-18T12:45:16.0000000Z",
                               "2018/08/18T12:45:16.0000000Z",
                               "2018-18-08T12:45:16.0000000Z",
                               "2018-08-18T12:45:16.0000000",                               
                               " 2018-08-18T12:45:16.0000000Z ",
                               "2018-08-18T12:45:16.0000000+02:00",
                               "2018-08-18T12:45:16.0000000-07:00" }; 
      
      ParseWithISO8601(dateStrings, DateTimeStyles.None);
      Console.WriteLine("\n-----\n");
      ParseWithISO8601(dateStrings, DateTimeStyles.AllowWhiteSpaces);
      Console.WriteLine("\n-----\n");
      ParseWithISO8601(dateStrings, DateTimeStyles.AdjustToUniversal);
      Console.WriteLine("\n-----\n");
      ParseWithISO8601(dateStrings, DateTimeStyles.AssumeLocal);
      Console.WriteLine("\n-----\n");
      ParseWithISO8601(dateStrings, DateTimeStyles.AssumeUniversal);   }

   private static void ParseWithISO8601(string[] dateStrings, DateTimeStyles styles)
   {   
      Console.WriteLine($"Parsing with {styles}:");
      foreach (var dateString in dateStrings)
      {
         try {
            var date = DateTimeOffset.ParseExact(dateString, "O", null, styles);
            Console.WriteLine($"   {dateString,-35} --> {date:yyyy-MM-dd HH:mm:ss.FF zzz}");
         }
         catch (FormatException)
         {
            Console.WriteLine($"   FormatException: Unable to convert '{dateString}'");
         }   
      } 
   }
}
// The example displays the following output:
//      Parsing with None:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         FormatException: Unable to convert '2018/08/18T12:45:16.0000000Z'
//         FormatException: Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
//         FormatException: Unable to convert ' 2018-08-18T12:45:16.0000000Z '
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
//
//      -----
//
//      Parsing with AllowWhiteSpaces:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         FormatException: Unable to convert '2018/08/18T12:45:16.0000000Z'
//         FormatException: Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
//         2018-08-18T12:45:16.0000000Z       --> 2018-08-18 12:45:16 +00:00
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
//
//      -----
//
//      Parsing with AdjustToUniversal:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         FormatException: Unable to convert '2018/08/18T12:45:16.0000000Z'
//         FormatException: Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 19:45:16 +00:00
//         FormatException: Unable to convert ' 2018-08-18T12:45:16.0000000Z '
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 10:45:16 +00:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 19:45:16 +00:00
//
//      -----
//
//      Parsing with AssumeLocal:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         FormatException: Unable to convert '2018/08/18T12:45:16.0000000Z'
//         FormatException: Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
//         FormatException: Unable to convert ' 2018-08-18T12:45:16.0000000Z '
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
//
//      -----
//
//      Parsing with AssumeUniversal:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         FormatException: Unable to convert '2018/08/18T12:45:16.0000000Z'
//         FormatException: Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 +00:00
//         FormatException: Unable to convert ' 2018-08-18T12:45:16.0000000Z '
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
Imports System.Globalization

Public Module Example
   Public Sub Main()
      Dim dateStrings() = { "2018-08-18T12:45:16.0000000Z",
                            "2018/08/18T12:45:16.0000000Z",
                            "2018-18-08T12:45:16.0000000Z",
                            "2018-08-18T12:45:16.0000000",                               
                            " 2018-08-18T12:45:16.0000000Z ",
                            "2018-08-18T12:45:16.0000000+02:00",
                            "2018-08-18T12:45:16.0000000-07:00" } 
      
      ParseWithISO8601(dateStrings, DateTimeStyles.None)
      Console.WriteLine($"{vbCrLf}-----{vbCrLf}")
      ParseWithISO8601(dateStrings, DateTimeStyles.AllowWhiteSpaces)
      Console.WriteLine($"{vbCrLf}-----{vbCrLf}")
      ParseWithISO8601(dateStrings, DateTimeStyles.AdjustToUniversal)
      Console.WriteLine($"{vbCrLf}-----{vbCrLf}")
      ParseWithISO8601(dateStrings, DateTimeStyles.AssumeLocal)
      Console.WriteLine($"{vbCrLf}-----{vbCrLf}")
      ParseWithISO8601(dateStrings, DateTimeStyles.AssumeUniversal)   
   End Sub

   Private Sub ParseWithISO8601(dateStrings() As String, styles As DateTimeStyles)
      Console.WriteLine($"Parsing with {styles}:")
      For Each dateStr In dateStrings
         Try 
            Dim dat = DateTimeOffset.ParseExact(dateString, "O", Nothing, styles)
            Console.WriteLine($"   {dateString,-35} --> {dat:yyyy-MM-dd HH:mm:ss.FF zzz}")
         catch e As FormatException
            Console.WriteLine($"   FormatException: Unable to convert '{dateString}'")
         End Try   
      Next 
   End Sub
End Module
' The example displays the following output:
'      Parsing with None:
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'
'      -----
'
'      Parsing with AllowWhiteSpaces:
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'
'      -----
'
'      Parsing with AdjustToUniversal:
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'
'      -----
'
'      Parsing with AssumeLocal:
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'
'      -----
'
'      Parsing with AssumeUniversal:
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'
'         FormatException: Unable to convert '07-30-2018'

Uwagi

Metoda DateTimeOffset.ParseExact(String, String, IFormatProvider, DateTimeStyles) analizuje ciąg reprezentujący datę, która musi być w formacie zdefiniowanym przez parametr format.The DateTimeOffset.ParseExact(String, String, IFormatProvider, DateTimeStyles) method parses the string representation of a date, which must be in the format defined by the format parameter. Wymaga również, aby <Data >, <godzina > i <przesunięcie > elementy ciągu reprezentującego datę i godzinę są wyświetlane w kolejności określonej przez format.It also requires that the <Date>, <Time>, and <Offset> elements of the string representation of a date and time appear in the order specified by format. Jeśli ciąg input nie jest zgodny ze wzorcem parametru format, z dowolnymi odmianami zdefiniowanymi przez parametr styles Metoda zgłasza FormatException.If the input string does not match the pattern of the format parameter, with any variations defined by the styles parameter, the method throws a FormatException. Z kolei Metoda DateTimeOffset.Parse(String, IFormatProvider, DateTimeStyles) analizuje ciąg reprezentujący datę w dowolnym formacie rozpoznawanym przez obiekt DateTimeFormatInfo dostawcy formatowania.In contrast, the DateTimeOffset.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. Parse również pozwala na <datę >, <czas > i <przesunięcie > elementy ciągu reprezentującego datę i godzinę, które mają być wyświetlane w dowolnej kolejności.Parse also allows the <Date>, <Time>, and <Offset> elements of the string representation of a date and time to appear in any order.

format parametr jest ciągiem zawierającym pojedynczy specyfikator formatu standardowego lub jeden lub więcej specyfikatorów formatu niestandardowego, które definiują wymagany wzorzec parametru input.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 pattern of the input parameter. Aby uzyskać szczegółowe informacje na temat prawidłowych kodów formatowania, zobacz ciągi standardowego formatu daty i godziny oraz Niestandardowe ciągi formatujące datę i godzinę.For details about valid formatting codes, see Standard Date and Time Format Strings and Custom Date and Time Format Strings. Jeśli format zawiera specyfikatory formatu niestandardowego z, zzlub zzz, aby wskazać, że przesunięcie musi być obecne w input, przesunięcie musi zawierać znak minus lub znak dodatni.If format includes the z, zz, or zzz custom format specifiers to indicate that an offset must be present in input, that offset must include either a negative sign or a positive sign. Jeśli brakuje znaku, Metoda zgłosi FormatException.If the sign is missing, the method throws a FormatException.

Jeśli format wymaga, aby input zawierać datę, ale nie godzinę, w wyniku DateTimeOffset obiektu zostanie przypisany czas północy (0:00:00).If format requires that input contain a date but not a time, the resulting DateTimeOffset object is assigned a time of midnight (0:00:00). Jeśli format wymaga, aby input zawierać godzinę, ale nie datę, w wyniku DateTimeOffset jest przypisana bieżąca data w systemie lokalnym.If format requires that input contain a time but not a date, the resulting DateTimeOffset object is assigned the current date on the local system. Jeśli format nie wymaga, aby input zawierać przesunięcie, przesunięcie powstającego obiektu DateTimeOffset zależy od wartości parametru styles.If format does not require that input contain an offset, the offset of the resulting DateTimeOffset object depends on the value of the styles parameter. Jeśli styles zawiera AssumeLocal, przesunięcie lokalnej strefy czasowej zostanie przypisane do obiektu DateTimeOffset.If styles includes AssumeLocal, the offset of the local time zone is assigned to the DateTimeOffset object. Jeśli styles zawiera AssumeUniversal, przesunięcie uniwersalnego czasu koordynowanego (UTC) lub + 00:00 jest przypisane do obiektu DateTimeOffset.If styles includes AssumeUniversal, the Coordinated Universal Time (UTC) offset, or +00:00, is assigned to the DateTimeOffset object. Jeśli żadna wartość nie jest określona, używane jest przesunięcie lokalnej strefy czasowej.If neither value is specified, the offset of the local time zone is used.

Określone symbole daty i godziny oraz ciągi używane w input są definiowane przez parametr formatProvider.The particular date and time symbols and strings used in input are defined by the formatProvider parameter. To samo jest prawdziwe w przypadku precyzyjnego formatu input, jeśli format jest ciągiem specyfikatora formatu standardowego.The same is true for the precise format of input, if format is a standard format specifier string. Parametr formatProvider może mieć jedną z następujących wartości:The formatProvider parameter can be either of the following:

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

Parametr styles określa, czy biały znak jest dozwolony w ciągu wejściowym, wskazuje, jak ciągi bez jawnego składnika przesunięcia są analizowane i obsługuje konwersję czasu UTC w ramach operacji analizowania.The styles parameter defines whether white space is allowed in the input string, indicates how strings without an explicit offset component are parsed, and supports UTC conversion as part of the parsing operation. Wszystkie elementy członkowskie wyliczenia DateTimeStyles są obsługiwane z wyjątkiem NoCurrentDateDefault.All members of the DateTimeStyles enumeration are supported except NoCurrentDateDefault. Poniższa tabela zawiera listę działania każdego z obsługiwanych elementów członkowskich.The following table lists the effect of each supported member.

DateTimeStyles składowąDateTimeStyles member ZachowanieBehavior
AdjustToUniversal Analizuje input i, w razie potrzeby, konwertuje ją na czas UTC.Parses input and, if necessary, converts it to UTC. Jest on równoznaczny z analizowaniem ciągu, a następnie wywołaniem metody DateTimeOffset.ToUniversalTime zwróconego obiektu DateTimeOffset.It is equivalent to parsing a string, and then calling the DateTimeOffset.ToUniversalTime method of the returned DateTimeOffset object.
AssumeLocal Jeśli format nie wymaga, aby input zawierać wartość przesunięcia, zwracany obiekt DateTimeOffset otrzymuje przesunięcie lokalnej strefy czasowej.If format does not require that input contain an offset value, the returned DateTimeOffset object is given the offset of the local time zone. Jest to wartość domyślna.This is the default value.
AssumeUniversal Jeśli format nie wymaga, aby input zawierać wartość przesunięcia, zwracany obiekt DateTimeOffset ma przesunięcie czasu UTC (+ 00:00).If format does not require that input contain an offset value, the returned DateTimeOffset object is given the UTC offset (+00:00).
AllowInnerWhite Zezwala input na uwzględnienie wewnętrznego odstępu, który nie jest określony przez format.Allows input to include inner white space not specified by format. Dodatkowe odstępy mogą pojawić się między składnikami daty i godziny i w poszczególnych składnikach i są ignorowane podczas analizowania ciągu.Extra white space can appear between date and time components and within individual components, and is ignored when parsing the string.
AllowLeadingWhite Zezwala input na uwzględnienie spacji wiodących nieokreślonych przez format.Allows input to include leading spaces not specified by format. Są one ignorowane podczas analizowania ciągu.These are ignored when parsing the string.
AllowTrailingWhite Zezwala input na dołączenie spacji końcowych, które nie są określone przez format.Allows input to include trailing spaces not specified by format. Są one ignorowane podczas analizowania ciągu.These are ignored when parsing the string.
AllowWhiteSpaces Zezwala input na uwzględnienie spacji wiodących, końcowych i wewnętrznych, które nie są określone przez format.Allows input to include leading, trailing, and inner spaces not specified by format. Podczas analizowania ciągu nie są uwzględniane wszystkie dodatkowe znaki odstępu, które nie są określone w format.All extra white-space characters not specified in format are ignored when parsing the string.
None Wskazuje, że dodatkowy biały znak nie jest dozwolony w input.Indicates that additional white space is not permitted in input. Biały znak musi wyglądać dokładnie tak, jak określono w format.White space must appear exactly as specified in format. To zachowanie domyślne.This is the default behavior.
RoundtripKind Nie ma żadnego efektu, ponieważ struktura DateTimeOffset nie zawiera właściwości Kind.Has no effect because the DateTimeOffset structure does not include a Kind property.

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 .NET Framework 3.5.NET Framework 3.5 i starszych wersjach oznaczenie AM/PM jest ignorowane.In the .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 zakres znaków, który reprezentuje datę i godzinę do DateTimeOffset odpowiednika przy użyciu określonego formatu, informacji o formacie specyficznym dla kultury i stylu.Converts a character span that represents a date and time to its DateTimeOffset equivalent using the specified format, culture-specific format information, and style. Format reprezentujący datę i godzinę musi być dokładnie zgodny z określonym formatem.The format of the date and time representation must match the specified format exactly.

public static DateTimeOffset ParseExact (ReadOnlySpan<char> input, ReadOnlySpan<char> format, IFormatProvider formatProvider, System.Globalization.DateTimeStyles styles = System.Globalization.DateTimeStyles.None);
static member ParseExact : ReadOnlySpan<char> * ReadOnlySpan<char> * IFormatProvider * System.Globalization.DateTimeStyles -> DateTimeOffset
Public Shared Function ParseExact (input As ReadOnlySpan(Of Char), format As ReadOnlySpan(Of Char), formatProvider As IFormatProvider, Optional styles As DateTimeStyles = System.Globalization.DateTimeStyles.None) As DateTimeOffset

Parametry

input
ReadOnlySpan<Char>

Zakres znaków, który reprezentuje datę i godzinę.A character span that represents a date and time.

format
ReadOnlySpan<Char>

Zakres znaków, który zawiera specyfikator formatu definiujący oczekiwany format input.A character span that contains a format specifier that defines the expected format of input.

formatProvider
IFormatProvider

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

styles
DateTimeStyles

Bitowa kombinacja wartości wyliczenia wskazująca dozwolony format input.A bitwise combination of enumeration values that indicates the permitted format of input.

Zwraca

DateTimeOffset

Obiekt, który jest równoznaczny z datą i godziną, która jest zawarta w parametrze input, określony przez parametry format, formatProvideri styles.An object that is equivalent to the date and time that is contained in the input parameter, as specified by the format, formatProvider, and styles parameters.

Wyjątki

Przesunięcie jest większe niż 14 godzin lub mniejsze niż-14 godzin.The offset is greater than 14 hours or less than -14 hours.
— lub —-or-
Parametr styles zawiera nieobsługiwaną wartość.The styles parameter includes an unsupported value.
— lub —-or-
Parametr styles zawiera wartości DateTimeStyles, które nie mogą być używane razem.The styles parameter contains DateTimeStyles values that cannot be used together.

input jest pustym zakresem znaków.input is an empty character span.
-lub-input nie zawiera prawidłowej reprezentacji ciągu daty i godziny.-or- input does not contain a valid string representation of a date and time.
-lub-format jest pustym zakresem znaków.-or- format is an empty character span.
— lub —-or-
Składnik godziny i oznaczenie "AM/PM" w input nie zgadzają się.The hour component and the AM/PM designator in input do not agree.

Uwagi

Ta metoda analizuje zakres znaków, który reprezentuje datę, która musi być w formacie zdefiniowanym przez parametr format.This method parses a character span that represents a date, which must be in the format defined by the format parameter. Wymaga również, aby <Data >, <godzina > i <przesunięcie > elementy ciągu reprezentującego datę i godzinę są wyświetlane w kolejności określonej przez format.It also requires that the <Date>, <Time>, and <Offset> elements of the string representation of a date and time appear in the order specified by format. Jeśli input nie pasuje do wzorca format, metoda zgłasza FormatException.If input does not match the format pattern, the method throws a FormatException. Z kolei Metoda DateTimeOffset.Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) analizuje ciąg reprezentujący datę w dowolnym formacie rozpoznawanym przez obiekt DateTimeFormatInfo dostawcy formatowania.In contrast, the DateTimeOffset.Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) method parses the string representation of a date in any one of the formats recognized by the format provider's DateTimeFormatInfo object. Parse również pozwala na <datę >, <czas > i <przesunięcie > elementy ciągu reprezentującego datę i godzinę, które mają być wyświetlane w dowolnej kolejności.Parse also allows the <Date>, <Time>, and <Offset> elements of the string representation of a date and time to appear in any order.

format parametr jest zakresem znaków zawierającym specyfikator formatu standardowego o pojedynczej postaci lub jeden lub więcej niestandardowych specyfikatorów formatu, które definiują wymagany format parametru input.The format parameter is a character span that contains either a single-character standard format specifier or one or more custom format specifiers that define the required format of the input parameter. Aby uzyskać szczegółowe informacje na temat prawidłowych kodów formatowania, zobacz ciągi standardowego formatu daty i godziny oraz Niestandardowe ciągi formatujące datę i godzinę.For details about valid formatting codes, see Standard Date and Time Format Strings and Custom Date and Time Format Strings. Jeśli format zawiera specyfikatory formatu niestandardowego z, zzlub zzz, aby wskazać, że przesunięcie musi być obecne w input, przesunięcie musi zawierać znak minus lub znak dodatni.If format includes the z, zz, or zzz custom format specifiers to indicate that an offset must be present in input, that offset must include either a negative sign or a positive sign. Jeśli brakuje znaku, Metoda zgłosi FormatException.If the sign is missing, the method throws a FormatException.

Jeśli format wymaga, aby input zawierać datę, ale nie godzinę, w wyniku DateTimeOffset obiektu zostanie przypisany czas północy (0:00:00).If format requires that input contain a date but not a time, the resulting DateTimeOffset object is assigned a time of midnight (0:00:00). Jeśli format wymaga, aby input zawierać godzinę, ale nie datę, w wyniku DateTimeOffset jest przypisana bieżąca data w systemie lokalnym.If format requires that input contain a time but not a date, the resulting DateTimeOffset object is assigned the current date on the local system. Jeśli format nie wymaga, aby input zawierać przesunięcia, a otrzymany obiekt DateTimeOffset jest przypisany do przesunięcia strefy czasowej systemu lokalnego.If format does not require that input contain an offset, the resulting DateTimeOffset object is assigned the time zone offset of the local system.

Określone symbole daty i godziny oraz ciągi używane w input są definiowane przez parametr formatProvider, tak jak input w przypadku, gdy format jest specyfikatorem formatu standardowego.The particular date and time symbols and strings used in input are defined by the formatProvider parameter, as is the precise format of input if format is a standard format specifier. Parametr formatProvider może mieć jedną z następujących wartości:The formatProvider parameter can be either of the following:

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

ParseExact(String, String, IFormatProvider)

Konwertuje określony ciąg reprezentujący datę i godzinę do DateTimeOffset 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 DateTimeOffset 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 DateTimeOffset ParseExact(System::String ^ input, System::String ^ format, IFormatProvider ^ formatProvider);
public static DateTimeOffset ParseExact (string input, string format, IFormatProvider formatProvider);
static member ParseExact : string * string * IFormatProvider -> DateTimeOffset
Public Shared Function ParseExact (input As String, format As String, formatProvider As IFormatProvider) As DateTimeOffset

Parametry

input
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 oczekiwany format input.A format specifier that defines the expected format of input.

formatProvider
IFormatProvider

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

Zwraca

DateTimeOffset

Obiekt, który jest odpowiednikiem daty i godziny zawartej w input określonym przez format i formatProvider.An object that is equivalent to the date and time that is contained in input as specified by format and formatProvider.

Wyjątki

Przesunięcie jest większe niż 14 godzin lub mniejsze niż-14 godzin.The offset is greater than 14 hours or less than -14 hours.

Parametr input ma wartość null.input is null.

— lub —-or- Parametr format ma wartość null.format is null.

input jest pustym ciągiem ("").input is an empty string ("").

— lub —-or- input nie zawiera prawidłowej reprezentacji ciągu daty i godziny.input does not contain a valid string representation of a date and time.

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

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

Przykłady

W poniższym przykładzie użyto metody DateTimeOffset.ParseExact(String, String, IFormatProvider) ze specyfikatorami formatu standardowego i niestandardowego oraz kulturą niezmienną do analizowania kilku ciągów daty i godziny.The following example uses the DateTimeOffset.ParseExact(String, String, IFormatProvider) method with standard and custom format specifiers and the invariant culture to parse several date and time strings.

string dateString, format;
DateTimeOffset result;
CultureInfo provider = CultureInfo.InvariantCulture;

// Parse date-only value with invariant culture.
dateString = "06/15/2008";
format = "d";
try
{
   result = DateTimeOffset.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 = DateTimeOffset.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 = DateTimeOffset.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 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 = DateTimeOffset.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 -07:00.
//    6/15/2008 is not in the correct format.
//    Sun 15 Jun 2008 8:30 AM -06:00 converts to 6/15/2008 8:30:00 AM -06:00.
//    Sun 15 Jun 2008 8:30 AM -06 is not in the correct format.
Dim dateString, format As String  
Dim result As DateTimeOffset
Dim provider As CultureInfo = CultureInfo.InvariantCulture

' Parse date-only value with invariant culture.
dateString = "06/15/2008"
format = "d"
Try
   result = DateTimeOffset.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 = DateTimeOffset.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 = DateTimeOffset.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 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 = DateTimeOffset.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 
' The example displays the following output:
'    06/15/2008 converts to 6/15/2008 12:00:00 AM -07:00.
'    6/15/2008 is not in the correct format.
'    Sun 15 Jun 2008 8:30 AM -06:00 converts to 6/15/2008 8:30:00 AM -06:00.
'    Sun 15 Jun 2008 8:30 AM -06 is not in the correct format.                     

Poniższy przykład analizuje tablicę ciągów, które są zgodne z ISO 8601.The following example parses an array of strings that are expected to conform to ISO 8601. Ponieważ dane wyjściowe z przykładu pokazują, ciągi zawierające spacje początkowe lub końcowe nie mogą zostać przeanalizowane pomyślnie, tak jak ciągi z elementami daty i godziny poza zakresem.As the output from the example shows, strings with leading or trailing spaces fail to parse successfully, as do strings with date and time elements that are out of range.

using System;

public class Example
{
   public static void Main()
   {
      string[] dateStrings = { "2018-08-18T12:45:16.0000000Z",
                               "2018/08/18T12:45:16.0000000Z",
                               "2018-18-08T12:45:16.0000000Z",
                               " 2018-08-18T12:45:16.0000000Z ",
                               "2018-08-18T12:45:16.0000000+02:00",
                               "2018-08-18T12:45:16.0000000-07:00" }; 
      
      foreach (var dateString in dateStrings)
      {
         try {
            var date = DateTimeOffset.ParseExact(dateString, "O", null);
            Console.WriteLine($"{dateString,-35} --> {date:yyyy-MM-dd HH:mm:ss.FF zzz}");
         }
         catch (FormatException)
         {
            Console.WriteLine($"FormatException: Unable to convert '{dateString}'");
         }   
      } 
   }
}
// The example displays the following output:
//      2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//      FormatException: Unable to convert '2018/08/18T12:45:16.0000000Z'
//      FormatException: Unable to convert '2018-18-08T12:45:16.0000000Z'
//      FormatException: Unable to convert ' 2018-08-18T12:45:16.0000000Z '
//      2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
//      2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
Public Module Example
   Public Sub Main()
      Dim dateStrings() As String = { "2018-08-18T12:45:16.0000000Z",
                                      "2018/08/18T12:45:16.0000000Z",
                                      "2018-18-08T12:45:16.0000000Z",
                                      " 2018-08-18T12:45:16.0000000Z ",
                                      "2018-08-18T12:45:16.0000000+02:00",
                                      "2018-08-18T12:45:16.0000000-07:00" } 
      
      For Each dateStr In dateStrings
         Try 
            Dim dat = DateTimeOffset.ParseExact(dateStr, "O", Nothing)
            Console.WriteLine($"{dateStr,-35} --> {dat:yyyy-MM-dd HH:mm:ss.FF zzz}")
         Catch  e As FormatException
            Console.WriteLine($"FormatException: Unable to convert '{dateStr}'")
         End Try   
      Next 
   End Sub
End Module
' The example displays the following output:
'      2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
'      FormatException: Unable to convert '2018/08/18T12:45:16.0000000Z'
'      FormatException: Unable to convert '2018-18-08T12:45:16.0000000Z'
'      FormatException: Unable to convert ' 2018-08-18T12:45:16.0000000Z '
'      2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
'      2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00

Uwagi

Metoda ParseExact(String, String, IFormatProvider) analizuje ciąg reprezentujący datę, która musi być w formacie zdefiniowanym przez parametr format.The 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 >, <godzina > i <przesunięcie > elementy ciągu reprezentującego datę i godzinę są wyświetlane w kolejności określonej przez format.It also requires that the <Date>, <Time>, and <Offset> elements of the string representation of a date and time appear in the order specified by format. Jeśli ciąg input nie jest zgodny z tym format parametrem, metoda zgłasza FormatException.If the input string does not match this format parameter, the method throws a FormatException. Z kolei Metoda DateTimeOffset.Parse(String, IFormatProvider) analizuje ciąg reprezentujący datę w dowolnym formacie rozpoznawanym przez obiekt DateTimeFormatInfo dostawcy formatowania.In contrast, the DateTimeOffset.Parse(String, IFormatProvider) method parses the string representation of a date in any one of the formats recognized by the format provider's DateTimeFormatInfo object. Parse również pozwala na <datę >, <czas > i <przesunięcie > elementy ciągu reprezentującego datę i godzinę, które mają być wyświetlane w dowolnej kolejności.Parse also allows the <Date>, <Time>, and <Offset> elements of the string representation of a date and time to appear in any order.

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 parametru input.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 the input parameter. Aby uzyskać szczegółowe informacje na temat prawidłowych kodów formatowania, zobacz ciągi standardowego formatu daty i godziny oraz Niestandardowe ciągi formatujące datę i godzinę.For details about valid formatting codes, see Standard Date and Time Format Strings and Custom Date and Time Format Strings. Jeśli format zawiera specyfikatory formatu niestandardowego z, zzlub zzz, aby wskazać, że przesunięcie musi być obecne w input, przesunięcie musi zawierać znak minus lub znak dodatni.If format includes the z, zz, or zzz custom format specifiers to indicate that an offset must be present in input, that offset must include either a negative sign or a positive sign. Jeśli brakuje znaku, Metoda zgłosi FormatException.If the sign is missing, the method throws a FormatException.

Jeśli format wymaga, aby input zawierać datę, ale nie godzinę, w wyniku DateTimeOffset obiektu zostanie przypisany czas północy (0:00:00).If format requires that input contain a date but not a time, the resulting DateTimeOffset object is assigned a time of midnight (0:00:00). Jeśli format wymaga, aby input zawierać godzinę, ale nie datę, w wyniku DateTimeOffset jest przypisana bieżąca data w systemie lokalnym.If format requires that input contain a time but not a date, the resulting DateTimeOffset object is assigned the current date on the local system. Jeśli format nie wymaga, aby input zawierać przesunięcia, a otrzymany obiekt DateTimeOffset jest przypisany do przesunięcia strefy czasowej systemu lokalnego.If format does not require that input contain an offset, the resulting DateTimeOffset object is assigned the time zone offset of the local system.

Określone symbole daty i godziny oraz ciągi używane w input są definiowane przez parametr formatProvider, tak jak input w przypadku, gdy format jest ciągiem specyfikatora formatu standardowego.The particular date and time symbols and strings used in input are defined by the formatProvider parameter, as is the precise format of input if format is a standard format specifier string. Parametr formatProvider może mieć jedną z następujących wartości:The formatProvider parameter can be either of the following:

Jeśli formatprovider jest null, używany jest obiekt CultureInfo, który odpowiada bieżącej kulturze.If formatprovider 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 .NET Framework 3.5.NET Framework 3.5 i starszych wersjach oznaczenie AM/PM jest ignorowane.In the .NET Framework 3.5.NET Framework 3.5 and earlier versions, the AM/PM designator is ignored.

Zobacz też

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

Konwertuje zakres znaków, który zawiera ciąg reprezentujący datę i godzinę do jego DateTimeOffset odpowiednika przy użyciu określonych formatów, informacji o formacie specyficznym dla kultury i stylu.Converts a character span that contains the string representation of a date and time to its DateTimeOffset equivalent using the specified formats, culture-specific format information, and style. Format reprezentujący datę i godzinę musi dokładnie odpowiadać jednemu z określonych formatów.The format of the date and time representation must match one of the specified formats exactly.

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

Parametry

input
ReadOnlySpan<Char>

Zakres znaków zawierający datę i godzinę do przekonwertowania.A character span that contains a date and time to convert.

formats
String[]

Tablica specyfikatorów formatu, które definiują oczekiwane formaty input.An array of format specifiers that define the expected formats of input.

formatProvider
IFormatProvider

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

styles
DateTimeStyles

Bitowa kombinacja wartości wyliczenia wskazująca dozwolony format input.A bitwise combination of enumeration values that indicates the permitted format of input.

Zwraca

DateTimeOffset

Obiekt, który jest równoznaczny z datą i godziną, która jest zawarta w parametrze input, określony przez parametry formats, formatProvideri styles.An object that is equivalent to the date and time that is contained in the input parameter, as specified by the formats, formatProvider, and styles parameters.

Wyjątki

Przesunięcie jest większe niż 14 godzin lub mniejsze niż-14 godzin.The offset is greater than 14 hours or less than -14 hours.
-lub-styles zawiera nieobsługiwaną wartość.-or- styles includes an unsupported value.
— lub —-or-
Parametr styles zawiera wartości DateTimeStyles, które nie mogą być używane razem.The styles parameter contains DateTimeStyles values that cannot be used together.

input jest pustym zakresem znaków.input is an empty character span.
-lub-input nie zawiera prawidłowej reprezentacji ciągu daty i godziny.-or- input does not contain a valid string representation of a date and time.
— lub —-or-
Żaden element formats nie zawiera prawidłowego specyfikatora formatu.No element of formats contains a valid format specifier.
— lub —-or-
Składnik godziny i oznaczenie "AM/PM" w input nie zgadzają się.The hour component and the AM/PM designator in input do not agree.

Uwagi

Ta metoda analizuje zakres znaków reprezentujący datę pasującą do każdego z wzorców przypisanych do parametru formats.This method parses a character span representing a date that matches any one of the patterns assigned to the formats parameter. Jeśli input nie pasuje do żadnego z tych wzorców ze wszystkimi odmianami zdefiniowanymi przez parametr styles, metoda zgłasza FormatException.If input 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 input z wieloma wzorcami formatowania to Przeciążenie zachowuje się identycznie z metodą DateTimeOffset.ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles).Aside from comparing input to multiple formatting patterns, this overload behaves identically to the DateTimeOffset.ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) method.

formats parametr jest tablicą ciągów, której elementy zawierają pojedynczy specyfikator formatu standardowego lub jeden lub więcej niestandardowych specyfikatorów formatu, które definiują możliwy wzorzec parametru input.The formats parameter is a string array whose elements contain either a single standard format specifier or one or more custom format specifiers that define the possible pattern of the input parameter. Gdy metoda jest wywoływana, input musi być zgodna z jednym z tych wzorców.When the method is called, input must match one of these patterns. Aby uzyskać szczegółowe informacje na temat prawidłowych kodów formatowania, zobacz ciągi standardowego formatu daty i godziny oraz Niestandardowe ciągi formatujące datę i godzinę.For details about valid formatting codes, see Standard Date and Time Format Strings and Custom Date and Time Format Strings. Jeśli dopasowany element w formats zawiera specyfikatory formatu niestandardowego z, zzlub zzz, aby wskazać, że przesunięcie musi być obecne w input, przesunięcie musi zawierać znak minus lub znak dodatni.If the matched element in formats includes the z, zz, or zzz custom format specifiers to indicate that an offset must be present in input, that offset must include either a negative sign or a positive sign. Jeśli brakuje znaku, Metoda zgłosi FormatException.If the sign is missing, the method throws a FormatException.

Ważne

Użycie parametru formats tego przeciążenia w celu określenia wielu formatów może pomóc w zmniejszeniu frustrację wielu użytkowników podczas wprowadzania dat i godzin.Using the formats parameter of this overload to specify multiple formats can help reduce the frustration many users experience when they enter dates and times. W szczególności możliwość zdefiniowania wielu wzorców danych wejściowych umożliwia aplikacji obsługę prezentacji daty i godziny, które mogą zawierać lub nie mieć wiodących zer w miesiącach, dniach, godzinach, minutach i sekundach.In particular, the ability to define multiple input patterns enables an application to handle date and time representations that can either include or lack leading zeros in months, days, hours, minutes, and seconds.

Jeśli dopasowany element w formats wymaga, aby input zawierać datę, ale nie czas, a otrzymany obiekt DateTimeOffset ma przypisany czas północy (0:00:00).If the matched element in formats requires that input contain a date but not a time, the resulting DateTimeOffset object is assigned a time of midnight (0:00:00). Jeśli dopasowany element w formats wymaga, aby input zawierać godzinę, ale nie datę, a otrzymany obiekt DateTimeOffset jest przypisany do bieżącej daty w systemie lokalnym.If the matched element in formats requires that input contain a time but not a date, the resulting DateTimeOffset object is assigned the current date on the local system. Jeśli dopasowany element w formats nie wymaga, aby input zawierać przesunięcie, przesunięcie powstającego obiektu DateTimeOffset zależy od wartości parametru styles.If the matched element in formats does not require that input contain an offset, the offset of the resulting DateTimeOffset object depends on the value of the styles parameter. Jeśli styles zawiera AssumeLocal, przesunięcie lokalnej strefy czasowej zostanie przypisane do obiektu DateTimeOffset.If styles includes AssumeLocal, the offset of the local time zone is assigned to the DateTimeOffset object. Jeśli styles zawiera AssumeUniversal, przesunięcie uniwersalnego czasu koordynowanego (UTC) lub + 00:00 jest przypisane do obiektu DateTimeOffset.If styles includes AssumeUniversal, the Coordinated Universal Time (UTC) offset, or +00:00, is assigned to the DateTimeOffset object. Jeśli żadna wartość nie jest określona, używane jest przesunięcie lokalnej strefy czasowej.If neither value is specified, the offset of the local time zone is used.

Określone symbole daty i godziny oraz ciągi używane w input są definiowane przez parametr formatProvider.The particular date and time symbols and strings used in input are defined by the formatProvider parameter. To samo jest prawdziwe w przypadku precyzyjnego formatu input, jeśli pasujący element formats jest ciągiem specyfikatora formatu standardowego.The same is true for the precise format of input, if the matching element of formats is a standard format specifier string. Parametr formatProvider może mieć jedną z następujących wartości:The formatProvider parameter can be either of the following:

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

Parametr styles określa, czy biały znak jest dozwolony w ciągu wejściowym, wskazuje, jak ciągi bez jawnego składnika przesunięcia są analizowane i obsługuje konwersję czasu UTC w ramach operacji analizowania.The styles parameter defines whether white space is permitted in the input string, indicates how strings without an explicit offset component are parsed, and supports UTC conversion as part of the parsing operation. Wszystkie elementy członkowskie wyliczenia DateTimeStyles są obsługiwane z wyjątkiem NoCurrentDateDefault.All members of the DateTimeStyles enumeration are supported except NoCurrentDateDefault. Poniższa tabela zawiera listę działania każdego z obsługiwanych elementów członkowskich.The following table lists the effect of each supported member.

DateTimeStyles składowąDateTimeStyles member ZachowanieBehavior
AdjustToUniversal Analizuje input i, w razie potrzeby, konwertuje ją na czas UTC.Parses input and, if necessary, converts it to UTC. Jest on równoznaczny z analizowaniem ciągu, a następnie wywołaniem metody DateTimeOffset.ToUniversalTime zwróconego obiektu DateTimeOffset.It is equivalent to parsing a string, and then calling the DateTimeOffset.ToUniversalTime method of the returned DateTimeOffset object.
AssumeLocal Jeśli dopasowany element w formats nie wymaga, aby input zawierać wartość przesunięcia, zwracany obiekt DateTimeOffset otrzymuje przesunięcie lokalnej strefy czasowej.If the matched element in formats does not require that input contain an offset value, the returned DateTimeOffset object is given the offset of the local time zone. Jest to wartość domyślna.This is the default value.
AssumeUniversal Jeśli dopasowany element w formats nie wymaga, aby input zawierać wartość przesunięcia, zwracany obiekt DateTimeOffset ma przesunięcie czasu UTC (+ 00:00).If the matched element in formats does not require that input contain an offset value, the returned DateTimeOffset object is given the UTC offset (+00:00).
AllowInnerWhite Zezwala input na uwzględnienie wewnętrznego odstępu, który nie jest określony przez format.Allows input to include inner white space not specified by format. Dodatkowe odstępy mogą pojawić się między składnikami daty i godziny i w obrębie poszczególnych składników (z wyjątkiem przesunięcia) i są ignorowane podczas analizowania ciągu.Extra white space can appear between date and time components and within individual components (except the offset), and is ignored when parsing the string.
AllowLeadingWhite Zezwala input na uwzględnienie spacji wiodących nieokreślonych przez formats.Allows input to include leading spaces not specified by formats. Są one ignorowane podczas analizowania ciągu.These are ignored when parsing the string.
AllowTrailingWhite Zezwala input na dołączenie spacji końcowych, które nie są określone przez formats.Allows input to include trailing spaces not specified by formats. Są one ignorowane podczas analizowania ciągu.These are ignored when parsing the string.
AllowWhiteSpaces Zezwala input na uwzględnienie spacji wiodących, końcowych i wewnętrznych, które nie są określone przez formats.Allows input to include leading, trailing, and inner spaces not specified by formats. Wszystkie dodatkowe znaki odstępu, które nie są określone w dopasowanym elemencie w formats są ignorowane podczas analizowania ciągu.All extra white-space characters not specified in the matched element in formats are ignored when parsing the string.
None Wskazuje, że dodatkowy biały znak nie jest dozwolony w input.Indicates that additional white space is not permitted in input. Biały znak musi być widoczny dokładnie tak, jak określono w określonym elemencie formats, aby nastąpiło dopasowanie.White space must appear exactly as specified in a particular element of formats for a match to occur. To zachowanie domyślne.This is the default behavior.
RoundtripKind Nie ma żadnego efektu, ponieważ struktura DateTimeOffset nie zawiera właściwości Kind.Has no effect because the DateTimeOffset structure does not include a Kind property.

Dotyczy