DateTimeOffset.ParseExact 方法

定義

將日期和時間的指定字串表示,轉換為其相等的 DateTimeOffsetConverts the specified string representation of a date and time to its DateTimeOffset equivalent. 字串表示的格式必須完全符合指定的格式。The format of the string representation must match a specified format exactly.

多載

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

使用指定的格式、特定文化特性格式資訊以及樣式,將日期和時間的指定字串表示,轉換為其相等的 DateTimeOffsetConverts the specified string representation of a date and time to its DateTimeOffset equivalent using the specified formats, culture-specific format information, and style. 字串表示的格式必須完全符合其中一個指定的格式。The format of the string representation must match one of the specified formats exactly.

ParseExact(String, String, IFormatProvider, DateTimeStyles)

使用指定的格式、特定文化特性格式資訊以及樣式,將日期和時間的指定字串表示,轉換為其相等的 DateTimeOffsetConverts the specified string representation of a date and time to its DateTimeOffset equivalent using the specified format, culture-specific format information, and style. 字串表示的格式必須完全符合指定的格式。The format of the string representation must match the specified format exactly.

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

使用指定的格式、文化特性特定格式資訊與樣式,將代表日期和時間的字元,轉換為其相等的 DateTimeOffsetConverts a character span that represents a date and time to its DateTimeOffset equivalent using the specified format, culture-specific format information, and style. 日期和時間表示的格式必須完全符合指定的格式。The format of the date and time representation must match the specified format exactly.

ParseExact(String, String, IFormatProvider)

使用指定的格式以及特定文化特性的格式資訊,將日期和時間的指定字串表示,轉換為其相等的 DateTimeOffsetConverts the specified string representation of a date and time to its DateTimeOffset equivalent using the specified format and culture-specific format information. 字串表示的格式必須完全符合指定的格式。The format of the string representation must match the specified format exactly.

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

使用指定的格式、文化特性特定格式資訊與樣式,將包含日期和時間字串表示的字元範圍,轉換為其相等的 DateTimeOffsetConverts 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. 日期和時間表示的格式必須完全符合其中一個指定的格式。The format of the date and time representation must match one of the specified formats exactly.

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

使用指定的格式、特定文化特性格式資訊以及樣式,將日期和時間的指定字串表示,轉換為其相等的 DateTimeOffsetConverts the specified string representation of a date and time to its DateTimeOffset equivalent using the specified formats, culture-specific format information, and style. 字串表示的格式必須完全符合其中一個指定的格式。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

參數

input
String

字串,包含要轉換的日期和時間。A string that contains a date and time to convert.

formats
String[]

格式規範陣列,定義 input 的預期格式。An array of format specifiers that define the expected formats of input.

formatProvider
IFormatProvider

物件,提供關於 input 的特定文化特性格式資訊。An object that supplies culture-specific formatting information about input.

styles
DateTimeStyles

列舉值的位元組合,表示 input 所允許的格式。A bitwise combination of enumeration values that indicates the permitted format of input.

傳回

物件,與 input 參數中包含的日期和時間相等,如 formatsformatProviderstyles 參數所指定。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.

例外狀況

位移大於 14 小時或小於 -14 小時。The offset is greater than 14 hours or less than -14 hours.

-或--or- styles 包含不支援的值。styles includes an unsupported value.

-或--or- styles 參數包含無法搭配使用的 DateTimeStyles 值。The styles parameter contains DateTimeStyles values that cannot be used together.

inputnullinput is null.

input 為空字串 ("")。input is an empty string ("").

-或--or- input 不包含日期與時間的有效字串表示。input does not contain a valid string representation of a date and time.

-或--or- formats 的項目未包含有效的格式規範。No element of formats contains a valid format specifier.

-或--or- 小時元件和 input 中的 AM/PM 指示項不相符。The hour component and the AM/PM designator in input do not agree.

範例

下列範例會針對日期和時間和位移值的字串表示定義多個輸入格式,然後將使用者輸入的字串傳遞給 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 

備註

DateTimeOffset.ParseExact(String, String[], IFormatProvider, DateTimeStyles) 方法會剖析符合指派給 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. 如果 input 字串與任何一種模式都不符合 styles 參數所定義的任何變化,則方法會擲回 FormatExceptionIf 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. 除了比較 input 與多個格式化模式,這個多載的行為與 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 參數是一個字串陣列,其專案包含單一標準格式規範,或一個或多個自訂格式規範,可定義 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. 呼叫方法時,input 必須符合其中一種模式。When the method is called, input must match one of these patterns. 如需有效格式化程式碼的詳細資訊,請參閱標準日期和時間格式字串自訂日期和時間格式字串For details about valid formatting codes, see Standard Date and Time Format Strings and Custom Date and Time Format Strings. 如果 formats 中的相符元素包含 zzzzzz 自訂格式規範,以指出位移必須存在於 input中,則該位移必須包含負號或正號。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. 如果缺少正負號,方法會擲回 FormatExceptionIf the sign is missing, the method throws a FormatException.

重要

使用此多載的 formats 參數來指定多種格式,可協助減少許多使用者在輸入日期和時間時所經歷的挫折。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. 特別是,定義多個輸入模式的功能可以讓應用程式處理日期和時程表示法,其中可能包含或缺少前置零(以月、日、小時、分鐘和秒為單位)。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. 此範例會提供這項說明。The example provides an illustration of this.

如果 formats 中符合的元素需要 input 包含日期,但不是時間,則會指派所產生的 DateTimeOffset 物件午夜(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). 如果 formats 中的相符專案要求 input 包含時間,而不是日期,則會將本機系統上的目前日期指派給產生的 DateTimeOffset 物件。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. 如果 formats 中的相符元素不需要 input 包含位移,則產生之 DateTimeOffset 物件的位移會取決於 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. 如果 styles 包含 AssumeLocal,當地時區的位移就會指派給 DateTimeOffset 物件。If styles includes AssumeLocal, the offset of the local time zone is assigned to the DateTimeOffset object. 如果 styles 包含 AssumeUniversal,則會將國際標準時間(UTC)位移(或 + 00:00)指派給 DateTimeOffset 物件。If styles includes AssumeUniversal, the Coordinated Universal Time (UTC) offset, or +00:00, is assigned to the DateTimeOffset object. 如果未指定任何值,則會使用本地時區的位移。If neither value is specified, the offset of the local time zone is used.

input 中使用的特定日期和時間符號和字串是由 formatProvider 參數所定義。The particular date and time symbols and strings used in input are defined by the formatProvider parameter. 如果 formats 的相符元素是標準格式規範字符串,則 input的精確格式也是如此。The same is true for the precise format of input, if the matching element of formats is a standard format specifier string. formatProvider 參數可以是下列其中一項:The formatProvider parameter can be either of the following:

如果 null``formatprovider,則會使用對應至目前文化特性的 CultureInfo 物件。If formatprovider is null, the CultureInfo object that corresponds to the current culture is used.

styles 參數會定義是否允許在輸入字串中使用空白字元,表示如何剖析不含明確位移元件的字串,並支援以 UTC 轉換做為剖析作業的一部分。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. 除了 NoCurrentDateDefault以外,支援 DateTimeStyles 列舉的所有成員。All members of the DateTimeStyles enumeration are supported except NoCurrentDateDefault. 下表列出每個支援成員的效果。The following table lists the effect of each supported member.

DateTimeStyles 成員DateTimeStyles member 行為Behavior
AdjustToUniversal 剖析 input,並在必要時將它轉換為 UTC。Parses input and, if necessary, converts it to UTC. 它相當於剖析字串,然後呼叫所傳回 DateTimeOffset 物件的 DateTimeOffset.ToUniversalTime 方法。It is equivalent to parsing a string, and then calling the DateTimeOffset.ToUniversalTime method of the returned DateTimeOffset object.
AssumeLocal 如果 formats 中的相符專案不需要 input 包含 offset 值,則傳回的 DateTimeOffset 物件會獲得當地時區的位移。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. 這是預設值。This is the default value.
AssumeUniversal 如果 formats 中的相符專案不需要 input 包含 offset 值,則會提供 UTC 位移(+ 00:00)給傳回的 DateTimeOffset 物件。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 允許 input 包含 format未指定的內部空白字元。Allows input to include inner white space not specified by format. 在日期和時間元件和個別元件(位移除外)之間可能會出現額外的空白字元,而且在剖析字串時,會忽略這些空白字元。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 允許 input 包含 formats未指定的前置空格。Allows input to include leading spaces not specified by formats. 剖析字串時,會忽略這些。These are ignored when parsing the string.
AllowTrailingWhite 允許 input 包含 formats未指定的尾端空格。Allows input to include trailing spaces not specified by formats. 剖析字串時,會忽略這些。These are ignored when parsing the string.
AllowWhiteSpaces 允許 input 包含 formats未指定的前置、尾端和內部空格。Allows input to include leading, trailing, and inner spaces not specified by formats. 剖析字串時,會忽略 formats 中符合的專案未指定的所有額外空白字元。All extra white-space characters not specified in the matched element in formats are ignored when parsing the string.
None 表示 input中不允許額外的空白字元。Indicates that additional white space is not permitted in input. 空白字元必須與特定 formats 專案中的指定內容完全相同,才會發生相符專案。White space must appear exactly as specified in a particular element of formats for a match to occur. 這是預設行為。This is the default behavior.
RoundtripKind 沒有任何作用,因為 DateTimeOffset 結構不包含 Kind 屬性。Has no effect because the DateTimeOffset structure does not include a Kind property.

給呼叫者的注意事項

.NET Framework 4.NET Framework 4中,如果要剖析的字串包含小時元件以及不在協定中的 AM/PM 指示項,則 ParseExact 方法會擲回 FormatExceptionIn the .NET Framework 4.NET Framework 4, the ParseExact method throws a FormatException if the string to be parsed contains an hour component and an AM/PM designator that are not in agreement. .NET Framework 3.5.NET Framework 3.5 和較早的版本中,會忽略 AM/PM 指示項。In the .NET Framework 3.5.NET Framework 3.5 and earlier versions, the AM/PM designator is ignored.

另請參閱

ParseExact(String, String, IFormatProvider, DateTimeStyles)

使用指定的格式、特定文化特性格式資訊以及樣式,將日期和時間的指定字串表示,轉換為其相等的 DateTimeOffsetConverts the specified string representation of a date and time to its DateTimeOffset equivalent using the specified format, culture-specific format information, and style. 字串表示的格式必須完全符合指定的格式。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

參數

input
String

字串,包含要轉換的日期和時間。A string that contains a date and time to convert.

format
String

格式規範,其定義 input 應有的格式。A format specifier that defines the expected format of input.

formatProvider
IFormatProvider

物件,提供關於 input 的特定文化特性格式資訊。An object that supplies culture-specific formatting information about input.

styles
DateTimeStyles

列舉值的位元組合,表示 input 所允許的格式。A bitwise combination of enumeration values that indicates the permitted format of input.

傳回

物件,與 input 參數中包含的日期和時間相等,如 formatformatProviderstyles 參數所指定。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.

例外狀況

位移大於 14 小時或小於 -14 小時。The offset is greater than 14 hours or less than -14 hours.

-或--or- styles 參數包含不支援的值。The styles parameter includes an unsupported value.

-或--or- styles 參數包含無法搭配使用的 DateTimeStyles 值。The styles parameter contains DateTimeStyles values that cannot be used together.

inputnullinput is null.

-或--or- formatnullformat is null.

input 為空字串 ("")。input is an empty string ("").

-或--or- input 不包含日期與時間的有效字串表示。input does not contain a valid string representation of a date and time.

-或--or- format 為空字串。format is an empty string.

-或--or- 小時元件和 input 中的 AM/PM 指示項不相符。The hour component and the AM/PM designator in input do not agree.

範例

下列範例會使用 DateTimeOffset.ParseExact(String, String, IFormatProvider, DateTimeStyles) 方法搭配標準和自訂格式規範、不因文化特性而異,以及各種 DateTimeStyles 值來剖析數個日期和時間字串。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.

下列範例會使用各種不同的 DateTimeStyles 值來剖析預期符合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. 如範例的輸出所示,格式正確的字串會在下列情況下無法剖析:As the output from the example shows, strings that are in the proper format fail to parse if:

除非在方法呼叫中提供了 DateTimeStyles.AssumeUniversal 旗標,否則未指定 UTC 時差的字串會假設為具有當地時區的位移(在此案例中為-07:00)。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. 在這種情況下,它們會被假設為全球協調時間。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'

備註

DateTimeOffset.ParseExact(String, String, IFormatProvider, DateTimeStyles) 方法會剖析日期的字串表示,其必須是由 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. 它也會要求日期和時間之字串表示的 <日期 >、<時間 > 和 <位移,會依照 > 所指定的順序出現。formatIt 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. 如果 input 字串與 format 參數的模式不相符,而 styles 參數所定義的任何變化,則方法會擲回 FormatExceptionIf 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. 相反地,DateTimeOffset.Parse(String, IFormatProvider, DateTimeStyles) 方法會以格式提供者的 DateTimeFormatInfo 物件所辨識的任何一種格式,來剖析日期的字串表示。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 也允許以任何順序顯示日期和時間之字串表示的 <日期 >、<時間 > 和 <位移 > 元素。Parse also allows the <Date>, <Time>, and <Offset> elements of the string representation of a date and time to appear in any order.

format 參數是一個字串,其中包含單一標準格式規範,或一或多個定義 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. 如需有效格式化程式碼的詳細資訊,請參閱標準日期和時間格式字串自訂日期和時間格式字串For details about valid formatting codes, see Standard Date and Time Format Strings and Custom Date and Time Format Strings. 如果 format 包括 zzzzzz 自訂格式規範,以指出位移必須存在於 input中,則該位移必須包含負號或正號。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. 如果缺少正負號,方法會擲回 FormatExceptionIf the sign is missing, the method throws a FormatException.

如果 format 需要 input 包含日期但不是時間,則會指派所產生的 DateTimeOffset 物件午夜(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). 如果 format 需要 input 包含時間,而不是日期,則產生的 DateTimeOffset 物件會被指派本機系統上的目前日期。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. 如果 format 不需要 input 包含位移,則產生之 DateTimeOffset 物件的位移取決於 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. 如果 styles 包含 AssumeLocal,當地時區的位移就會指派給 DateTimeOffset 物件。If styles includes AssumeLocal, the offset of the local time zone is assigned to the DateTimeOffset object. 如果 styles 包含 AssumeUniversal,則會將國際標準時間(UTC)位移(或 + 00:00)指派給 DateTimeOffset 物件。If styles includes AssumeUniversal, the Coordinated Universal Time (UTC) offset, or +00:00, is assigned to the DateTimeOffset object. 如果未指定任何值,則會使用本地時區的位移。If neither value is specified, the offset of the local time zone is used.

input 中使用的特定日期和時間符號和字串是由 formatProvider 參數所定義。The particular date and time symbols and strings used in input are defined by the formatProvider parameter. 如果 format 是標準格式規範字符串,也適用于 input的精確格式。The same is true for the precise format of input, if format is a standard format specifier string. formatProvider 參數可以是下列其中一項:The formatProvider parameter can be either of the following:

如果 null``formatprovider,則會使用對應至目前文化特性的 CultureInfo 物件。If formatprovider is null, the CultureInfo object that corresponds to the current culture is used.

styles 參數會定義是否允許在輸入字串中使用空白字元,表示如何剖析不含明確位移元件的字串,並支援以 UTC 轉換做為剖析作業的一部分。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. 除了 NoCurrentDateDefault以外,支援 DateTimeStyles 列舉的所有成員。All members of the DateTimeStyles enumeration are supported except NoCurrentDateDefault. 下表列出每個支援成員的效果。The following table lists the effect of each supported member.

DateTimeStyles 成員DateTimeStyles member 行為Behavior
AdjustToUniversal 剖析 input,並在必要時將它轉換為 UTC。Parses input and, if necessary, converts it to UTC. 它相當於剖析字串,然後呼叫所傳回 DateTimeOffset 物件的 DateTimeOffset.ToUniversalTime 方法。It is equivalent to parsing a string, and then calling the DateTimeOffset.ToUniversalTime method of the returned DateTimeOffset object.
AssumeLocal 如果 format 不需要 input 包含 offset 值,則會將本機時區的位移提供給傳回的 DateTimeOffset 物件。If format does not require that input contain an offset value, the returned DateTimeOffset object is given the offset of the local time zone. 這是預設值。This is the default value.
AssumeUniversal 如果 format 不需要 input 包含 offset 值,則會提供 UTC 位移(+ 00:00)給傳回的 DateTimeOffset 物件。If format does not require that input contain an offset value, the returned DateTimeOffset object is given the UTC offset (+00:00).
AllowInnerWhite 允許 input 包含 format未指定的內部空白字元。Allows input to include inner white space not specified by format. 在日期和時間元件之間以及個別元件中,會出現額外的空白字元,而且在剖析字串時,會忽略這些空白字元。Extra white space can appear between date and time components and within individual components, and is ignored when parsing the string.
AllowLeadingWhite 允許 input 包含 format未指定的前置空格。Allows input to include leading spaces not specified by format. 剖析字串時,會忽略這些。These are ignored when parsing the string.
AllowTrailingWhite 允許 input 包含 format未指定的尾端空格。Allows input to include trailing spaces not specified by format. 剖析字串時,會忽略這些。These are ignored when parsing the string.
AllowWhiteSpaces 允許 input 包含 format未指定的前置、尾端和內部空格。Allows input to include leading, trailing, and inner spaces not specified by format. 剖析字串時,會忽略 format 中未指定的所有額外空白字元。All extra white-space characters not specified in format are ignored when parsing the string.
None 表示 input中不允許額外的空白字元。Indicates that additional white space is not permitted in input. 空白字元必須完全如 format中所指定的樣子出現。White space must appear exactly as specified in format. 這是預設行為。This is the default behavior.
RoundtripKind 沒有任何作用,因為 DateTimeOffset 結構不包含 Kind 屬性。Has no effect because the DateTimeOffset structure does not include a Kind property.

給呼叫者的注意事項

.NET Framework 4.NET Framework 4中,如果要剖析的字串包含小時元件以及不在協定中的 AM/PM 指示項,則 ParseExact 方法會擲回 FormatExceptionIn the .NET Framework 4.NET Framework 4, the ParseExact method throws a FormatException if the string to be parsed contains an hour component and an AM/PM designator that are not in agreement. .NET Framework 3.5.NET Framework 3.5 和較早的版本中,會忽略 AM/PM 指示項。In the .NET Framework 3.5.NET Framework 3.5 and earlier versions, the AM/PM designator is ignored.

另請參閱

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

使用指定的格式、文化特性特定格式資訊與樣式,將代表日期和時間的字元,轉換為其相等的 DateTimeOffsetConverts a character span that represents a date and time to its DateTimeOffset equivalent using the specified format, culture-specific format information, and style. 日期和時間表示的格式必須完全符合指定的格式。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

參數

input
ReadOnlySpan<Char>

代表日期和時間的字元範圍。A character span that represents a date and time.

format
ReadOnlySpan<Char>

包含定義 input 預期格式之格式規範的字元範圍。A character span that contains a format specifier that defines the expected format of input.

formatProvider
IFormatProvider

提供關於 input 之特定文化特性格式資訊的物件。An object that provides culture-specific formatting information about input.

styles
DateTimeStyles

列舉值的位元組合,表示 input 所允許的格式。A bitwise combination of enumeration values that indicates the permitted format of input.

傳回

物件,與 input 參數中包含的日期和時間相等,如 formatformatProviderstyles 參數所指定。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.

例外狀況

位移大於 14 小時或小於 -14 小時。The offset is greater than 14 hours or less than -14 hours.
-或--or-
styles 參數包含不支援的值。The styles parameter includes an unsupported value.
-或--or-
styles 參數包含無法搭配使用的 DateTimeStyles 值。The styles parameter contains DateTimeStyles values that cannot be used together.

input 是空的字元範圍。input is an empty character span.
-或- input 不包含日期和時間的有效字串表示。-or- input does not contain a valid string representation of a date and time.
-或- format 是空的字元範圍。-or- format is an empty character span.
-或--or-
小時元件和 input 中的 AM/PM 指示項不相符。The hour component and the AM/PM designator in input do not agree.

備註

這個方法會剖析代表日期的字元範圍,其必須是 format 參數所定義的格式。This method parses a character span that represents a date, which must be in the format defined by the format parameter. 它也會要求日期和時間之字串表示的 <日期 >、<時間 > 和 <位移,會依照 > 所指定的順序出現。formatIt 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. 如果 input 不符合 format 模式,則方法會擲回 FormatExceptionIf input does not match the format pattern, the method throws a FormatException. 相反地,DateTimeOffset.Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) 方法會以格式提供者的 DateTimeFormatInfo 物件所辨識的任何一種格式,來剖析日期的字串表示。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 也允許以任何順序顯示日期和時間之字串表示的 <日期 >、<時間 > 和 <位移 > 元素。Parse also allows the <Date>, <Time>, and <Offset> elements of the string representation of a date and time to appear in any order.

format 參數是一個字元範圍,其中包含單一字元標準格式規範或一或多個自訂格式規範,可定義 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. 如需有效格式化程式碼的詳細資訊,請參閱標準日期和時間格式字串自訂日期和時間格式字串For details about valid formatting codes, see Standard Date and Time Format Strings and Custom Date and Time Format Strings. 如果 format 包括 zzzzzz 自訂格式規範,以指出位移必須存在於 input中,則該位移必須包含負號或正號。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. 如果缺少正負號,方法會擲回 FormatExceptionIf the sign is missing, the method throws a FormatException.

如果 format 需要 input 包含日期但不是時間,則會指派所產生的 DateTimeOffset 物件午夜(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). 如果 format 需要 input 包含時間,而不是日期,則產生的 DateTimeOffset 物件會被指派本機系統上的目前日期。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. 如果 format 不要求 input 包含位移,則會將本機系統的時區位移指派給產生的 DateTimeOffset 物件。If format does not require that input contain an offset, the resulting DateTimeOffset object is assigned the time zone offset of the local system.

input 中使用的特定日期和時間符號和字串是由 formatProvider 參數所定義,如果 format 是標準格式規範,則是 input 的精確格式。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. formatProvider 參數可以是下列其中一項:The formatProvider parameter can be either of the following:

如果 null``formatprovider,則會使用對應至目前文化特性的 CultureInfo 物件。If formatprovider is null, the CultureInfo object that corresponds to the current culture is used.

ParseExact(String, String, IFormatProvider)

使用指定的格式以及特定文化特性的格式資訊,將日期和時間的指定字串表示,轉換為其相等的 DateTimeOffsetConverts the specified string representation of a date and time to its DateTimeOffset equivalent using the specified format and culture-specific format information. 字串表示的格式必須完全符合指定的格式。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

參數

input
String

字串,包含要轉換的日期和時間。A string that contains a date and time to convert.

format
String

格式規範,其定義 input 應有的格式。A format specifier that defines the expected format of input.

formatProvider
IFormatProvider

物件,提供關於 input 的特定文化特性格式資訊。An object that supplies culture-specific formatting information about input.

傳回

物件,與 input 中包含的日期和時間相等,如 formatformatProvider 所指定。An object that is equivalent to the date and time that is contained in input as specified by format and formatProvider.

例外狀況

位移大於 14 小時或小於 -14 小時。The offset is greater than 14 hours or less than -14 hours.

inputnullinput is null.

-或--or- formatnullformat is null.

input 為空字串 ("")。input is an empty string ("").

-或--or- input 不包含日期與時間的有效字串表示。input does not contain a valid string representation of a date and time.

-或--or- format 為空字串。format is an empty string.

-或--or- 小時元件和 input 中的 AM/PM 指示項不相符。The hour component and the AM/PM designator in input do not agree.

範例

下列範例會使用具有標準和自訂格式規範的 DateTimeOffset.ParseExact(String, String, IFormatProvider) 方法,以及不因文化特性而異的方式來剖析數個日期和時間字串。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.                     

下列範例會剖析預期符合ISO 8601的字串陣列。The following example parses an array of strings that are expected to conform to ISO 8601. 如範例的輸出所示,具有前置或尾端空格的字串無法成功剖析,如同具有超出範圍之日期和時間元素的字串一樣。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

備註

ParseExact(String, String, IFormatProvider) 方法會剖析日期的字串表示,其必須是由 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. 它也會要求日期和時間之字串表示的 <日期 >、<時間 > 和 <位移,會依照 > 所指定的順序出現。formatIt 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. 如果 input 字串不符合此 format 參數,則方法會擲回 FormatExceptionIf the input string does not match this format parameter, the method throws a FormatException. 相反地,DateTimeOffset.Parse(String, IFormatProvider) 方法會以格式提供者的 DateTimeFormatInfo 物件所辨識的任何一種格式,來剖析日期的字串表示。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 也允許以任何順序顯示日期和時間之字串表示的 <日期 >、<時間 > 和 <位移 > 元素。Parse also allows the <Date>, <Time>, and <Offset> elements of the string representation of a date and time to appear in any order.

format 參數是一個字串,其中包含單一標準格式規範或一或多個自訂格式規範,以定義 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. 如需有效格式化程式碼的詳細資訊,請參閱標準日期和時間格式字串自訂日期和時間格式字串For details about valid formatting codes, see Standard Date and Time Format Strings and Custom Date and Time Format Strings. 如果 format 包括 zzzzzz 自訂格式規範,以指出位移必須存在於 input中,則該位移必須包含負號或正號。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. 如果缺少正負號,方法會擲回 FormatExceptionIf the sign is missing, the method throws a FormatException.

如果 format 需要 input 包含日期但不是時間,則會指派所產生的 DateTimeOffset 物件午夜(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). 如果 format 需要 input 包含時間,而不是日期,則產生的 DateTimeOffset 物件會被指派本機系統上的目前日期。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. 如果 format 不要求 input 包含位移,則會將本機系統的時區位移指派給產生的 DateTimeOffset 物件。If format does not require that input contain an offset, the resulting DateTimeOffset object is assigned the time zone offset of the local system.

input 中使用的特定日期和時間符號和字串是由 formatProvider 參數所定義,如果 format 是標準格式規範字符串,則是 input 的精確格式。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. formatProvider 參數可以是下列其中一項:The formatProvider parameter can be either of the following:

如果 null``formatprovider,則會使用對應至目前文化特性的 CultureInfo 物件。If formatprovider is null, the CultureInfo object that corresponds to the current culture is used.

給呼叫者的注意事項

.NET Framework 4.NET Framework 4中,如果要剖析的字串包含小時元件以及不在協定中的 AM/PM 指示項,則 ParseExact 方法會擲回 FormatExceptionIn the .NET Framework 4.NET Framework 4, the ParseExact method throws a FormatException if the string to be parsed contains an hour component and an AM/PM designator that are not in agreement. .NET Framework 3.5.NET Framework 3.5 和較早的版本中,會忽略 AM/PM 指示項。In the .NET Framework 3.5.NET Framework 3.5 and earlier versions, the AM/PM designator is ignored.

另請參閱

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

使用指定的格式、文化特性特定格式資訊與樣式,將包含日期和時間字串表示的字元範圍,轉換為其相等的 DateTimeOffsetConverts 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. 日期和時間表示的格式必須完全符合其中一個指定的格式。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

參數

input
ReadOnlySpan<Char>

包含要轉換之日期和時間的字元範圍。A character span that contains a date and time to convert.

formats
String[]

格式規範陣列,定義 input 的預期格式。An array of format specifiers that define the expected formats of input.

formatProvider
IFormatProvider

物件,提供關於 input 的特定文化特性格式資訊。An object that supplies culture-specific formatting information about input.

styles
DateTimeStyles

列舉值的位元組合,表示 input 所允許的格式。A bitwise combination of enumeration values that indicates the permitted format of input.

傳回

物件,與 input 參數中包含的日期和時間相等,如 formatsformatProviderstyles 參數所指定。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.

例外狀況

位移大於 14 小時或小於 -14 小時。The offset is greater than 14 hours or less than -14 hours.
-或- styles 包括不支援的值。-or- styles includes an unsupported value.
-或--or-
styles 參數包含無法搭配使用的 DateTimeStyles 值。The styles parameter contains DateTimeStyles values that cannot be used together.

input 是空的字元範圍。input is an empty character span.
-或- input 不包含日期和時間的有效字串表示。-or- input does not contain a valid string representation of a date and time.
-或--or-
formats 的項目未包含有效的格式規範。No element of formats contains a valid format specifier.
-或--or-
小時元件和 input 中的 AM/PM 指示項不相符。The hour component and the AM/PM designator in input do not agree.

備註

這個方法會剖析字元範圍,代表符合指派給 formats 參數之任何一種模式的日期。This method parses a character span representing a date that matches any one of the patterns assigned to the formats parameter. 如果 input 不符合任何一種模式與 styles 參數所定義的任何變化,則方法會擲回 FormatExceptionIf input does not match any one of these patterns with any of the variations defined by the styles parameter, the method throws a FormatException. 除了比較 input 與多個格式化模式,這個多載的行為與 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 參數是一個字串陣列,其專案包含單一標準格式規範,或一個或多個自訂格式規範,可定義 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. 呼叫方法時,input 必須符合其中一種模式。When the method is called, input must match one of these patterns. 如需有效格式化程式碼的詳細資訊,請參閱標準日期和時間格式字串自訂日期和時間格式字串For details about valid formatting codes, see Standard Date and Time Format Strings and Custom Date and Time Format Strings. 如果 formats 中的相符元素包含 zzzzzz 自訂格式規範,以指出位移必須存在於 input中,則該位移必須包含負號或正號。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. 如果缺少正負號,方法會擲回 FormatExceptionIf the sign is missing, the method throws a FormatException.

重要

使用此多載的 formats 參數來指定多種格式,可協助減少許多使用者在輸入日期和時間時所經歷的挫折。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. 特別是,定義多個輸入模式的功能可以讓應用程式處理日期和時程表示法,其中可能包含或缺少前置零(以月、日、小時、分鐘和秒為單位)。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.

如果 formats 中符合的元素需要 input 包含日期,但不是時間,則會指派所產生的 DateTimeOffset 物件午夜(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). 如果 formats 中的相符專案要求 input 包含時間,而不是日期,則會將本機系統上的目前日期指派給產生的 DateTimeOffset 物件。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. 如果 formats 中的相符元素不需要 input 包含位移,則產生之 DateTimeOffset 物件的位移會取決於 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. 如果 styles 包含 AssumeLocal,當地時區的位移就會指派給 DateTimeOffset 物件。If styles includes AssumeLocal, the offset of the local time zone is assigned to the DateTimeOffset object. 如果 styles 包含 AssumeUniversal,則會將國際標準時間(UTC)位移(或 + 00:00)指派給 DateTimeOffset 物件。If styles includes AssumeUniversal, the Coordinated Universal Time (UTC) offset, or +00:00, is assigned to the DateTimeOffset object. 如果未指定任何值,則會使用本地時區的位移。If neither value is specified, the offset of the local time zone is used.

input 中使用的特定日期和時間符號和字串是由 formatProvider 參數所定義。The particular date and time symbols and strings used in input are defined by the formatProvider parameter. 如果 formats 的相符元素是標準格式規範字符串,則 input的精確格式也是如此。The same is true for the precise format of input, if the matching element of formats is a standard format specifier string. formatProvider 參數可以是下列其中一項:The formatProvider parameter can be either of the following:

如果 null``formatprovider,則會使用對應至目前文化特性的 CultureInfo 物件。If formatprovider is null, the CultureInfo object that corresponds to the current culture is used.

styles 參數會定義是否允許在輸入字串中使用空白字元,表示如何剖析不含明確位移元件的字串,並支援以 UTC 轉換做為剖析作業的一部分。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. 除了 NoCurrentDateDefault以外,支援 DateTimeStyles 列舉的所有成員。All members of the DateTimeStyles enumeration are supported except NoCurrentDateDefault. 下表列出每個支援成員的效果。The following table lists the effect of each supported member.

DateTimeStyles 成員DateTimeStyles member 行為Behavior
AdjustToUniversal 剖析 input,並在必要時將它轉換為 UTC。Parses input and, if necessary, converts it to UTC. 它相當於剖析字串,然後呼叫所傳回 DateTimeOffset 物件的 DateTimeOffset.ToUniversalTime 方法。It is equivalent to parsing a string, and then calling the DateTimeOffset.ToUniversalTime method of the returned DateTimeOffset object.
AssumeLocal 如果 formats 中的相符專案不需要 input 包含 offset 值,則傳回的 DateTimeOffset 物件會獲得當地時區的位移。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. 這是預設值。This is the default value.
AssumeUniversal 如果 formats 中的相符專案不需要 input 包含 offset 值,則會提供 UTC 位移(+ 00:00)給傳回的 DateTimeOffset 物件。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 允許 input 包含 format未指定的內部空白字元。Allows input to include inner white space not specified by format. 在日期和時間元件和個別元件(位移除外)之間可能會出現額外的空白字元,而且在剖析字串時,會忽略這些空白字元。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 允許 input 包含 formats未指定的前置空格。Allows input to include leading spaces not specified by formats. 剖析字串時,會忽略這些。These are ignored when parsing the string.
AllowTrailingWhite 允許 input 包含 formats未指定的尾端空格。Allows input to include trailing spaces not specified by formats. 剖析字串時,會忽略這些。These are ignored when parsing the string.
AllowWhiteSpaces 允許 input 包含 formats未指定的前置、尾端和內部空格。Allows input to include leading, trailing, and inner spaces not specified by formats. 剖析字串時,會忽略 formats 中符合的專案未指定的所有額外空白字元。All extra white-space characters not specified in the matched element in formats are ignored when parsing the string.
None 表示 input中不允許額外的空白字元。Indicates that additional white space is not permitted in input. 空白字元必須與特定 formats 專案中的指定內容完全相同,才會發生相符專案。White space must appear exactly as specified in a particular element of formats for a match to occur. 這是預設行為。This is the default behavior.
RoundtripKind 沒有任何作用,因為 DateTimeOffset 結構不包含 Kind 屬性。Has no effect because the DateTimeOffset structure does not include a Kind property.

適用於