DateTimeOffset.TryParseExact メソッド

定義

指定した文字列形式の日付と時刻を等価の DateTimeOffset の値に変換します。Converts 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.

オーバーロード

TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset)

指定した書式の配列、カルチャ固有の書式情報、およびスタイルを使用して、指定した日付と時刻の文字列形式を等価の DateTimeOffset に変換します。Converts the specified string representation of a date and time to its DateTimeOffset equivalent using the specified array of formats, culture-specific format information, and style. 文字列形式の書式は、指定されたいずれかの書式と完全に一致する必要があります。The format of the string representation must match one of the specified formats exactly.

TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTimeOffset)

指定した書式、カルチャ固有の書式情報、およびスタイルを使用して、文字範囲に含まれる日付と時刻の表現を等価の DateTimeOffset に変換します。Converts the representation of a date and time in a character span 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.

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

指定した書式、カルチャ固有の書式情報、およびスタイルを使用して、文字スパンによる日付と時刻の表現を等価の DateTimeOffset に変換します。Converts the representation of a date and time in a character span 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.

TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset)

指定した書式、カルチャ固有の書式情報、およびスタイルを使用して、指定した日付と時刻の文字列形式を等価の DateTimeOffset に変換します。Converts 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.

TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset)

指定した書式の配列、カルチャ固有の書式情報、およびスタイルを使用して、指定した日付と時刻の文字列形式を等価の DateTimeOffset に変換します。Converts the specified string representation of a date and time to its DateTimeOffset equivalent using the specified array of formats, culture-specific format information, and style. 文字列形式の書式は、指定されたいずれかの書式と完全に一致する必要があります。The format of the string representation must match one of the specified formats exactly.

public:
 static bool TryParseExact(System::String ^ input, cli::array <System::String ^> ^ formats, IFormatProvider ^ formatProvider, System::Globalization::DateTimeStyles styles, [Runtime::InteropServices::Out] DateTimeOffset % result);
public static bool TryParseExact (string input, string[] formats, IFormatProvider formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
public static bool TryParseExact (string? input, string?[]? formats, IFormatProvider? formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset? result);
static member TryParseExact : string * string[] * IFormatProvider * System.Globalization.DateTimeStyles * DateTimeOffset -> bool
Public Shared Function TryParseExact (input As String, formats As String(), formatProvider As IFormatProvider, styles As DateTimeStyles, ByRef result As DateTimeOffset) As Boolean

パラメーター

input
String

変換する日時を含む文字列。A string that contains a date and time to convert.

formats
String[]

input の有効な書式を定義する配列。An array that defines 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. 通常指定する値は、None です。A typical value to specify is None.

result
DateTimeOffset

このメソッドが戻るときに、変換に成功した場合は input の日時と等しい DateTimeOffset が格納されます。変換に失敗した場合は MinValue が格納されます。When the method returns, contains the DateTimeOffset equivalent to the date and time of input, if the conversion succeeded, or MinValue, if the conversion failed. input が正しい文字列形式の日時を含んでいない場合、format で定義された書式に従う日時が含まれていない場合、または、formatsnull の場合、変換に失敗します。The conversion fails if the input does not contain a valid string representation of a date and time, or does not contain the date and time in the expected format defined by format, or if formats is null. このパラメーターは初期化せずに渡されます。This parameter is passed uninitialized.

戻り値

Boolean

input パラメーターが正常に変換された場合は true。それ以外の場合は falsetrue if the input parameter is successfully converted; otherwise, false.

例外

styles に未定義の DateTimeStyles 値が含まれています。styles includes an undefined DateTimeStyles value.

- または --or- NoCurrentDateDefault がサポートされていません。NoCurrentDateDefault is not supported.

- または --or- styles に相互に排他的な DateTimeStyles 値が含まれています。styles includes mutually exclusive DateTimeStyles values.

次の例では、日付と時刻の文字列形式とオフセット値の複数の入力形式を定義し、ユーザーが入力した文字列をメソッドに渡し TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset) ます。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 TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset) 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;

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();
   if (DateTimeOffset.TryParseExact(input, formats, provider,
                                   DateTimeStyles.AllowWhiteSpaces,
                                   out result))
   {
      break;
   }
   else
   {
      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() 
    If DateTimeOffset.TryParseExact(input, formats, provider, _
                                    DateTimeStyles.AllowWhiteSpaces, _
                                    result) Then
       Exit Do
    Else
       Console.WriteLine("Unable to parse {0}.", input)      
       tries += 1
    End If
 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 

注釈

メソッドは、 TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset) 配列に割り当てられているパターンのいずれかと一致する日付の文字列形式を解析し formats ます。The TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset) method parses the string representation of a date that matches any one of the patterns assigned to the formats array. 文字列が、 input パラメーターで定義されているどのバリエーションとも一致しない場合 styles 、解析操作は失敗し、メソッドはを返し false ます。If the input string does not match any one of these patterns with any variations defined by the styles parameter, the parsing operation fails and the method returns false. input書式指定子を含む複数の文字列と比較すること以外に、このオーバーロードはメソッドと同じように動作 DateTimeOffset.ParseExact(String, String[], IFormatProvider, DateTimeStyles) します。Aside from comparing input to multiple strings that contain format specifiers, this overload behaves identically to the DateTimeOffset.ParseExact(String, String[], IFormatProvider, DateTimeStyles) method.

パラメーターは、 formats 単一の標準書式指定子、またはの可能なパターンを定義する1つ以上のカスタム書式指定子を要素に含む文字列配列です inputThe 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 input. 有効な書式指定コードの詳細については、「 標準の日付と時刻の書式指定文字列 」および「 カスタム日時書式指定文字列」を参照してください。For details about valid formatting codes, see Standard Date and Time Format Strings and Custom Date and Time Format Strings. 内の一致する要素に、オフセットが存在する必要があることを formats z zz 示すために、、またはカスタム書式指定子が含まれている場合 zzz 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. 符号が指定されていない場合、解析操作は失敗し、メソッドはを返し false ます。If the sign is missing, the parse operation fails and the method returns false.

重要

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時 (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 入力に時刻を含める必要があるが、日付は含まない場合、結果の 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. inputの一致する要素 formats が標準書式指定子の文字列である場合も、の正確なパターンに当てはまります。The same is true for the precise pattern of input if the matching element of formats is a standard format specifier string. パラメーターには、 formatProvider 次のいずれかを指定できます。The formatProvider parameter can be either of the following:

がの場合は formatprovider nullCultureInfo 現在のカルチャに対応するオブジェクトが使用されます。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. を除き、列挙体のすべてのメンバー DateTimeStyles がサポートされ NoCurrentDateDefault ます。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.ToUniversalTime 返されたオブジェクトのメソッドを呼び出すことと同じです DateTimeOffsetIt is equivalent to parsing a string, and then calling the DateTimeOffset.ToUniversalTime method of the returned DateTimeOffset object.
AssumeLocal 内の一致する要素が formats オフセット値を含むを必要としない場合 input 、返される 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 、返されたオブジェクトに DateTimeOffset は 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 inputの要素で指定されていない内側の空白文字を含めることができ formats ます。Allows input to include inner white space not specified by the elements in formats. 余分な空白は、日付と時刻のコンポーネントと個々のコンポーネント (オフセットを除く) の間で使用でき、文字列の解析時には無視されます。Extra white space can appear between date and time components and within individual components (except for the offset) and is ignored when parsing the string.
AllowLeadingWhite inputの要素で指定されていない先頭のスペースを含めることができるように formats します。Allows input to include leading spaces not specified by the elements in formats. これらは、文字列を解析するときには無視されます。These are ignored when parsing the string.
AllowTrailingWhite inputの要素で指定されていない末尾のスペースを含めることができ formats ます。Allows input to include trailing spaces not specified by the elements in formats. これらは、文字列を解析するときには無視されます。These are ignored when parsing the string.
AllowWhiteSpaces inputの要素で指定されていない先頭、末尾、および内部スペースを含めることができ formats ます。Allows input to include leading, trailing, and inner spaces not specified by the elements in 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 in formats for a successful match to occur. これは既定の動作です。This is the default behavior.
RoundtripKind DateTimeOffset構造体にプロパティが含まれていないため、効果はありません KindHas no effect because the DateTimeOffset structure does not include a Kind property.

注意 (呼び出し元)

では、 .NET Framework 4.NET Framework 4 TryParseExact false 解析対象の文字列に1時間の部分と、アグリーメントに含まれていない AM/PM 指定子が含まれている場合、はを返します。In the .NET Framework 4.NET Framework 4, the TryParseExact returns false 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.

適用対象

TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTimeOffset)

指定した書式、カルチャ固有の書式情報、およびスタイルを使用して、文字範囲に含まれる日付と時刻の表現を等価の DateTimeOffset に変換します。Converts the representation of a date and time in a character span 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 bool TryParseExact(ReadOnlySpan<char> input, ReadOnlySpan<char> format, IFormatProvider ^ formatProvider, System::Globalization::DateTimeStyles styles, [Runtime::InteropServices::Out] DateTimeOffset % result);
public static bool TryParseExact (ReadOnlySpan<char> input, ReadOnlySpan<char> format, IFormatProvider? formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
public static bool TryParseExact (ReadOnlySpan<char> input, ReadOnlySpan<char> format, IFormatProvider formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
static member TryParseExact : ReadOnlySpan<char> * ReadOnlySpan<char> * IFormatProvider * System.Globalization.DateTimeStyles * DateTimeOffset -> bool
Public Shared Function TryParseExact (input As ReadOnlySpan(Of Char), format As ReadOnlySpan(Of Char), formatProvider As IFormatProvider, styles As DateTimeStyles, ByRef result As DateTimeOffset) As Boolean

パラメーター

input
ReadOnlySpan<Char>

変換する日付と時刻を表す文字を含むスパン。A span containing the characters that represent a date and time to convert.

format
ReadOnlySpan<Char>

input の必要な形式を定義する形式指定子。A format specifier that defines the required 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. 通常指定する値は、None です。A typical value to specify is None

result
DateTimeOffset

このメソッドが戻るときに、変換に成功した場合は input の日時と等しい DateTimeOffset が格納されます。変換に失敗した場合は MinValue が格納されます。When the method returns, contains the DateTimeOffset equivalent to the date and time of input, if the conversion succeeded, or MinValue if the conversion failed. 次の場合、変換は失敗しますThe conversion fails if the

戻り値

Boolean

input パラメーターが正常に変換された場合は true。それ以外の場合は falsetrue if the input parameter is successfully converted; otherwise, false.

例外

styles に未定義の DateTimeStyles 値が含まれています。styles includes an undefined DateTimeStyles value.
または、NoCurrentDateDefault がサポートされていません。-or- NoCurrentDateDefault is not supported.
または、styles に相互に排他的な DateTimeStyles 値が含まれています。-or- styles includes mutually exclusive DateTimeStyles values.

注釈

このオーバーロードはメソッドに似ていますが、 DateTimeOffset.ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) 変換に失敗した場合に、このメソッドが例外をスローしない点が異なります。This overload is like the DateTimeOffset.ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) method, except that this method does not throw an exception if the conversion fails. このメソッドは、パラメーターで指定されたパターンに正確に一致する必要がある日付と時刻の表現を解析し format ます。It parses the representation of a date and time that must exactly match the pattern specified by the format parameter. inputがこのパターンに一致しない場合、パラメーターで定義されている空白文字のバリエーションがあると、 styles 解析操作は失敗し、メソッドはを返し false ます。If input does not match this pattern, with some possible variations in white space defined by the styles parameter, the parsing operation fails and the method returns false.

パラメーターは、 format 1 つの標準書式指定子、またはの必要なパターンを定義する1つ以上のカスタム書式指定子のいずれかを含む文字範囲です inputThe format parameter is a character span that contains either a single standard format specifier or one or more custom format specifiers that define the required pattern of input. 有効な書式指定コードの詳細については、「 標準の日付と時刻の書式指定文字列 」および「 カスタム日時書式指定文字列」を参照してください。For details about valid formatting codes, see Standard Date and Time Format Strings and Custom Date and Time Format Strings. に、オフセットが存在する必要があることを format z zz 示すために、、または zzz カスタム書式指定子が含まれる場合 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. 符号が指定されていない場合、解析操作は失敗し、メソッドはを返し false ます。If the sign is missing, the parsing operation fails and the method returns false.

format 時刻ではなく日付を含むことを要求した場合 input 、結果として生成されるオブジェクトには DateTimeOffset 午前0時 (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 時刻を含み、日付が含まれていないことを要求する場合、結果として inputDateTimeOffset られるオブジェクトには、ローカルシステムの現在の日付が割り当てられます。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. これは、 input format が標準書式指定子の文字列である場合に、の正確なパターンにも当てはまります。The same is true for the precise pattern of input if format is a standard format specifier string. パラメーターには、 formatProvider 次のいずれかを指定できます。The formatProvider parameter can be either of the following:

がの場合は formatprovider nullCultureInfo 現在のカルチャに対応するオブジェクトが使用されます。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. を除き、列挙体のすべてのメンバー DateTimeStyles がサポートされ NoCurrentDateDefault ます。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.ToUniversalTime 返されたオブジェクトのメソッドを呼び出すことと同じです DateTimeOffsetIt is equivalent to parsing a date and time representation, and then calling the DateTimeOffset.ToUniversalTime method of the returned DateTimeOffset object.
AssumeLocal formatにオフセット値を含める必要がない場合 input 、返される 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 behavior.
AssumeUniversal にオフセット値が含まれている必要がない場合は、返された format input オブジェクトに DateTimeOffset 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 input形式で指定されていない内部の空白文字を含めることができます。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, other than the offset, 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 含まれていないため、効果はありません KindHas no effect, because the DateTimeOffset structure does not include a Kind property.

適用対象

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

指定した書式、カルチャ固有の書式情報、およびスタイルを使用して、文字スパンによる日付と時刻の表現を等価の DateTimeOffset に変換します。Converts the representation of a date and time in a character span 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 bool TryParseExact(ReadOnlySpan<char> input, cli::array <System::String ^> ^ formats, IFormatProvider ^ formatProvider, System::Globalization::DateTimeStyles styles, [Runtime::InteropServices::Out] DateTimeOffset % result);
public static bool TryParseExact (ReadOnlySpan<char> input, string?[]? formats, IFormatProvider? formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset? result);
public static bool TryParseExact (ReadOnlySpan<char> input, string[] formats, IFormatProvider formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
static member TryParseExact : ReadOnlySpan<char> * string[] * IFormatProvider * System.Globalization.DateTimeStyles * DateTimeOffset -> bool
Public Shared Function TryParseExact (input As ReadOnlySpan(Of Char), formats As String(), formatProvider As IFormatProvider, styles As DateTimeStyles, ByRef result As DateTimeOffset) As Boolean

パラメーター

input
ReadOnlySpan<Char>

変換する日付と時刻を表す文字を含むスパン。A span containing the characters that represent a date and time to convert.

formats
String[]

input に許容される書式を定義する標準またはカスタムの書式指定文字列の配列。A array of standard or custom format strings that define the acceptable 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. 通常指定する値は、None です。A typical value to specify is None

result
DateTimeOffset

このメソッドが戻るときに、変換に成功した場合は input の日時と等しい DateTimeOffset が格納されます。変換に失敗した場合は MinValue が格納されます。When the method returns, contains the DateTimeOffset equivalent to the date and time of input, if the conversion succeeded, or MinValue if the conversion failed. 次の場合、変換は失敗しますThe conversion fails if the

戻り値

Boolean

input パラメーターが正常に変換された場合は true。それ以外の場合は falsetrue if the input parameter is successfully converted; otherwise, false.

例外

styles に未定義の DateTimeStyles 値が含まれています。styles includes an undefined DateTimeStyles value.
または、NoCurrentDateDefault がサポートされていません。-or- NoCurrentDateDefault is not supported.
または、styles に相互に排他的な DateTimeStyles 値が含まれています。-or- styles includes mutually exclusive DateTimeStyles values.

注釈

このメソッドは、配列に割り当てられているパターンのいずれかと一致する日付の文字列形式を解析し formats ます。This method parses the string representation of a date that matches any one of the patterns assigned to the formats array. inputが、パラメーターで定義されているどのバリエーションとも一致しない場合 styles 、解析操作は失敗し、メソッドはを返し false ます。If input does not match any one of these patterns with any variations defined by the styles parameter, the parsing operation fails and the method returns false. input書式指定子を含む複数の文字列と比較すること以外に、このオーバーロードはメソッドと同じように動作 DateTimeOffset.ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles) します。Aside from comparing input to multiple strings that contain format specifiers, this overload behaves identically to the DateTimeOffset.ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles) method.

パラメーターは、 formats 単一の標準書式指定子、またはの可能なパターンを定義する1つ以上のカスタム書式指定子を要素に含む文字列配列です inputThe 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 input. 有効な書式指定コードの詳細については、「 標準の日付と時刻の書式指定文字列 」および「 カスタム日時書式指定文字列」を参照してください。For details about valid formatting codes, see Standard Date and Time Format Strings and Custom Date and Time Format Strings. 内の一致する要素に、オフセットが存在する必要があることを formats z zz 示すために、、またはカスタム書式指定子が含まれている場合 zzz 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. 符号が指定されていない場合、解析操作は失敗し、メソッドはを返し false ます。If the sign is missing, the parse operation fails and the method returns false.

重要

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時 (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 入力に時刻を含める必要があるが、日付は含まない場合、結果の 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にが含まれている場合 DateTimeStyles.AssumeLocal は、ローカルタイムゾーンのオフセットがオブジェクトに割り当てられ DateTimeOffset ます。If styles includes DateTimeStyles.AssumeLocal, the offset of the local time zone is assigned to the DateTimeOffset object. stylesにが含まれている場合は、 DateTimeStyles.AssumeUniversal 世界協定時刻 (UTC) のオフセットまたは + 00:00 がオブジェクトに割り当てられ DateTimeOffset ます。If styles includes DateTimeStyles.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 used in input are defined by the formatProvider parameter. inputの一致する要素 formats が標準書式指定子の文字列である場合も、の正確なパターンに当てはまります。The same is true for the precise pattern of input if the matching element of formats is a standard format specifier string. パラメーターには、 formatProvider 次のいずれかを指定できます。The formatProvider parameter can be either of the following:

がの場合は formatprovider nullCultureInfo 現在のカルチャに対応するオブジェクトが使用されます。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. を除き、列挙体のすべてのメンバー DateTimeStyles がサポートされ NoCurrentDateDefault ます。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.ToUniversalTime 返されたオブジェクトのメソッドを呼び出すことと同じです DateTimeOffsetIt is equivalent to parsing a string, and then calling the DateTimeOffset.ToUniversalTime method of the returned DateTimeOffset object.
AssumeLocal 内の一致する要素が formats オフセット値を含むを必要としない場合 input 、返される 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 、返されたオブジェクトに DateTimeOffset は 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 inputの要素で指定されていない内側の空白文字を含めることができ formats ます。Allows input to include inner white space not specified by the elements in formats. 余分な空白は、日付と時刻のコンポーネントと個々のコンポーネント (オフセットを除く) の間で使用でき、文字列の解析時には無視されます。Extra white space can appear between date and time components and within individual components (except for the offset) and is ignored when parsing the string.
AllowLeadingWhite inputの要素で指定されていない先頭のスペースを含めることができるように formats します。Allows input to include leading spaces not specified by the elements in formats. これらは、文字列を解析するときには無視されます。These are ignored when parsing the string.
AllowTrailingWhite inputの要素で指定されていない末尾のスペースを含めることができ formats ます。Allows input to include trailing spaces not specified by the elements in formats. これらは、文字列を解析するときには無視されます。These are ignored when parsing the string.
AllowWhiteSpaces inputの要素で指定されていない先頭、末尾、および内部スペースを含めることができ formats ます。Allows input to include leading, trailing, and inner spaces not specified by the elements in 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 in formats for a successful match to occur. これは既定の動作です。This is the default behavior.
RoundtripKind DateTimeOffset構造体にプロパティが含まれていないため、効果はありません KindHas no effect because the DateTimeOffset structure does not include a Kind property.

適用対象

TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset)

指定した書式、カルチャ固有の書式情報、およびスタイルを使用して、指定した日付と時刻の文字列形式を等価の DateTimeOffset に変換します。Converts 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 bool TryParseExact(System::String ^ input, System::String ^ format, IFormatProvider ^ formatProvider, System::Globalization::DateTimeStyles styles, [Runtime::InteropServices::Out] DateTimeOffset % result);
public static bool TryParseExact (string input, string format, IFormatProvider formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
public static bool TryParseExact (string? input, string? format, IFormatProvider? formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset? result);
static member TryParseExact : string * string * IFormatProvider * System.Globalization.DateTimeStyles * DateTimeOffset -> bool
Public Shared Function TryParseExact (input As String, format As String, formatProvider As IFormatProvider, styles As DateTimeStyles, ByRef result As DateTimeOffset) As Boolean

パラメーター

input
String

変換する日時を含む文字列。A string that contains a date and time to convert.

format
String

input の必要な形式を定義する形式指定子。A format specifier that defines the required 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. 通常指定する値は、None です。A typical value to specify is None.

result
DateTimeOffset

このメソッドが戻るときに、変換に成功した場合は input の日時と等しい DateTimeOffset が格納されます。変換に失敗した場合は MinValue が格納されます。When the method returns, contains the DateTimeOffset equivalent to the date and time of input, if the conversion succeeded, or MinValue, if the conversion failed. input パラメーターが null の場合、または、指定された日時の文字列形式が formatprovider で定義された書式に従っていない場合、変換に失敗します。The conversion fails if the input parameter is null, or does not contain a valid string representation of a date and time in the expected format defined by format and provider. このパラメーターは初期化せずに渡されます。This parameter is passed uninitialized.

戻り値

Boolean

input パラメーターが正常に変換された場合は true。それ以外の場合は falsetrue if the input parameter is successfully converted; otherwise, false.

例外

styles に未定義の DateTimeStyles 値が含まれています。styles includes an undefined DateTimeStyles value.

- または --or- NoCurrentDateDefault がサポートされていません。NoCurrentDateDefault is not supported.

- または --or- styles に相互に排他的な DateTimeStyles 値が含まれています。styles includes mutually exclusive DateTimeStyles values.

次の例では、 TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset) メソッドを標準およびカスタムの書式指定子、インバリアントカルチャ、およびさまざまな値と共に使用して、 DateTimeStyles 複数の日付と時刻の文字列を解析します。The following example uses the TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset) 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;
IFormatProvider provider = CultureInfo.InvariantCulture;

// Parse date-only value with invariant culture and assume time is UTC.
dateString = "06/15/2008";
format = "d";
if (DateTimeOffset.TryParseExact(dateString, format, provider,
                                 DateTimeStyles.AssumeUniversal,
                                 out result))
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString());
else
   Console.WriteLine("'{0}' is not in the correct format.", dateString);

// Parse date-only value with leading white space.
// Should return False because only trailing white space is
// specified in method call.
dateString = " 06/15/2008";
if (DateTimeOffset.TryParseExact(dateString, format, provider,
                                 DateTimeStyles.AllowTrailingWhite,
                                 out result))
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString());
else
   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";
if (DateTimeOffset.TryParseExact(dateString, format, provider,
                                 DateTimeStyles.AllowWhiteSpaces,
                                 out result))
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString());
else
   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";
if (DateTimeOffset.TryParseExact(dateString, format, provider,
                                DateTimeStyles.AllowWhiteSpaces |
                                DateTimeStyles.AdjustToUniversal,
                                out result))
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString());
else
   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"
If DateTimeOffset.TryParseExact(dateString, format, provider, _
                                   DateTimeStyles.AssumeUniversal, _
                                   result) Then
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString())
Else
   Console.WriteLine("'{0}' is not in the correct format.", dateString)
End If 

' Parse date-only value with leading white space.
' Should return False because only trailing white space is  
' specified in method call.
dateString = " 06/15/2008"
If DateTimeOffset.TryParseExact(dateString, format, provider, _
                                DateTimeStyles.AllowTrailingWhite, _
                                result) Then
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString())
Else
   Console.WriteLine("'{0}' is not in the correct format.", dateString)
End If 

' 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"
If DateTimeOffset.TryParseExact(dateString, format, provider, _
                                DateTimeStyles.AllowWhiteSpaces, _
                                result) Then
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString())
Else
   Console.WriteLine("'{0}' is not in the correct format.", dateString)
End If 

' 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"       
If DateTimeOffset.TryParseExact(dateString, format, provider, _
                                DateTimeStyles.AllowWhiteSpaces Or _
                                DateTimeStyles.AdjustToUniversal, _
                                result) Then
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString())
Else
   Console.WriteLine("'{0}' is not in the correct format.", dateString)
End If 
' 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 フラグ ( DateTimeStyles.AllowWhiteSpaces メソッドの呼び出しでが指定されていないなど) が含まれています。they contain white space, and an appropriate DateTimeStyles flag (such as DateTimeStyles.AllowWhiteSpaces has not been supplied in the method call.

  • 範囲外の日付と時刻の要素が含まれています。they contain date and time elements that are out of range.

UTC オフセットを指定しない文字列は、 DateTimeStyles.AssumeUniversal メソッド呼び出しでフラグが指定されていない限り、ローカルタイムゾーンのオフセット (この例では、太平洋標準時ゾーンのオフセットを反映する-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, which reflects the offset of the Pacific Daylight Time zone) 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}:");
      DateTimeOffset date;
      foreach (var dateString in dateStrings)
      {
         if (DateTimeOffset.TryParseExact(dateString, "O", null, styles, out date))
         {
            Console.WriteLine($"   {dateString,-35} --> {date:yyyy-MM-dd HH:mm:ss.FF zzz}");
         }
         else
         {
            Console.WriteLine($"   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
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
//         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
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         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
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 19:45:16 +00:00
//         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
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
//         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
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 +00:00
//         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}:")
      Dim dat As DateTimeOffset
      For Each dateStr In dateStrings
         If DateTimeOffset.TryParseExact(dateStr, "O", Nothing, styles, dat) Then
            Console.WriteLine($"   {dateStr,-35} --> {dat:yyyy-MM-dd HH:mm:ss.FF zzz}")
         Else
            Console.WriteLine($"   Unable to convert '{dateStr}'")
         End If   
      Next 
   End Sub
End Module
' The example displays the following output:
'      Parsing with None:
'         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
'         Unable to convert '2018/08/18T12:45:16.0000000Z'
'         Unable to convert '2018-18-08T12:45:16.0000000Z'
'         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
'         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
'         Unable to convert '2018/08/18T12:45:16.0000000Z'
'         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
'         Unable to convert '2018/08/18T12:45:16.0000000Z'
'         Unable to convert '2018-18-08T12:45:16.0000000Z'
'         2018-08-18T12:45:16.0000000         --> 2018-08-18 19:45:16 +00:00
'         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
'         Unable to convert '2018/08/18T12:45:16.0000000Z'
'         Unable to convert '2018-18-08T12:45:16.0000000Z'
'         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
'         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
'         Unable to convert '2018/08/18T12:45:16.0000000Z'
'         Unable to convert '2018-18-08T12:45:16.0000000Z'
'         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 +00:00
'         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

注釈

メソッドのこのオーバーロード TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset) はメソッドに似ていますが、 DateTimeOffset.ParseExact(String, String, IFormatProvider, DateTimeStyles) 変換に失敗した場合にこのメソッドが例外をスローしない点が異なります。This overload of the TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset) method is like the DateTimeOffset.ParseExact(String, String, IFormatProvider, DateTimeStyles) method, except that this method does not throw an exception if the conversion fails. このメソッドは、パラメーターで指定されたパターンに正確に一致する必要がある日付と時刻の文字列形式を解析し format ます。It parses the string representation of a date and time that must exactly match the pattern specified by the format parameter. 文字列が input このパターンに一致しない場合、パラメーターによって定義された空白のバリエーションがいくつかありますが、 styles 解析操作は失敗し、メソッドはを返し false ます。If the input string does not match this pattern, with some possible variations in white space defined by the styles parameter, the parsing operation fails and the method returns false.

パラメーターは、 format 1 つの標準書式指定子、またはに必要なパターンを定義する1つ以上のカスタム書式指定子のいずれかを含む文字列です inputThe 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 input. 有効な書式指定コードの詳細については、「 標準の日付と時刻の書式指定文字列 」および「 カスタム日時書式指定文字列」を参照してください。For details about valid formatting codes, see Standard Date and Time Format Strings and Custom Date and Time Format Strings. に、オフセットが存在する必要があることを format z zz 示すために、、または zzz カスタム書式指定子が含まれる場合 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. 符号が指定されていない場合、解析操作は失敗し、メソッドはを返し false ます。If the sign is missing, the parsing operation fails and the method returns false.

format 時刻ではなく日付を含むことを要求した場合 input 、結果として生成されるオブジェクトには DateTimeOffset 午前0時 (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 時刻を含み、日付が含まれていないことを要求する場合、結果として inputDateTimeOffset られるオブジェクトには、ローカルシステムの現在の日付が割り当てられます。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. これは、 input format が標準書式指定子の文字列である場合に、の正確なパターンにも当てはまります。The same is true for the precise pattern of input if format is a standard format specifier string. パラメーターには、 formatProvider 次のいずれかを指定できます。The formatProvider parameter can be either of the following:

がの場合は formatprovider nullCultureInfo 現在のカルチャに対応するオブジェクトが使用されます。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. を除き、列挙体のすべてのメンバー DateTimeStyles がサポートされ NoCurrentDateDefault ます。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.ToUniversalTime 返されたオブジェクトのメソッドを呼び出すことと同じです DateTimeOffsetIt is equivalent to parsing a string, and then calling the DateTimeOffset.ToUniversalTime method of the returned DateTimeOffset object.
AssumeLocal formatにオフセット値を含める必要がない場合 input 、返される 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 behavior.
AssumeUniversal にオフセット値が含まれている必要がない場合は、返された format input オブジェクトに DateTimeOffset 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 input形式で指定されていない内部の空白文字を含めることができます。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, other than the offset, 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 含まれていないため、効果はありません KindHas no effect, because the DateTimeOffset structure does not include a Kind property.

注意 (呼び出し元)

では、 .NET Framework 4.NET Framework 4 TryParseExact false 解析対象の文字列に1時間の部分と、アグリーメントに含まれていない AM/PM 指定子が含まれている場合、はを返します。In the .NET Framework 4.NET Framework 4, the TryParseExact returns false 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.

こちらもご覧ください

適用対象