DateTime.ParseExact メソッド

定義

指定した文字列形式の日付と時刻を等価の DateTime の値に変換します。Converts the specified string representation of a date and time to its DateTime equivalent. 文字列形式の書式は、指定した書式と完全に一致する必要があります。それ以外の場合は、例外がスローされます。The format of the string representation must match a specified format exactly or an exception is thrown.

オーバーロード

ParseExact(String, String, IFormatProvider)

指定した書式とカルチャ固有の書式情報を使用して、指定した日付と時刻の文字列形式を等価の DateTime の値に変換します。Converts the specified string representation of a date and time to its DateTime 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>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles)

指定した書式、カルチャ固有の書式情報、スタイルを使用して、指定した日付と時刻のスパン表現を、それと等価な DateTime に変換します。Converts the specified span representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. 文字列形式の書式は、指定した書式と完全に一致する必要があります。それ以外の場合は、例外がスローされます。The format of the string representation must match the specified format exactly or an exception is thrown.

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

指定した書式の配列、カルチャ固有の書式情報、スタイルを使用して、指定した日付と時刻のスパン表現を、それと等価な DateTime に変換します。Converts the specified span representation of a date and time to its DateTime equivalent using the specified array of formats, culture-specific format information, and style. 文字列形式の書式は、指定した書式の少なくとも 1 つと完全に一致する必要があります。それ以外の場合は、例外がスローされます。The format of the string representation must match at least one of the specified formats exactly or an exception is thrown.

ParseExact(String, String, IFormatProvider, DateTimeStyles)

指定した書式、カルチャ固有の書式情報、およびスタイルを使用して、指定した日付と時刻の文字列形式を等価の DateTime に変換します。Converts the specified string representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. 文字列形式の書式は、指定した書式と完全に一致する必要があります。それ以外の場合は、例外がスローされます。The format of the string representation must match the specified format exactly or an exception is thrown.

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

指定した書式の配列、カルチャ固有の書式情報、およびスタイルを使用して、指定した日付と時刻の文字列形式を等価の DateTime に変換します。Converts the specified string representation of a date and time to its DateTime equivalent using the specified array of formats, culture-specific format information, and style. 文字列形式の書式は、指定した書式の少なくとも 1 つと完全に一致する必要があります。それ以外の場合は、例外がスローされます。The format of the string representation must match at least one of the specified formats exactly or an exception is thrown.

注釈

重要

和暦の時代 (年号) は天皇の代に基づいているため、変更されることが予想されます。Eras in the Japanese calendars are based on the emperor's reign and are therefore expected to change. たとえば、JapaneseCalendarJapaneseLunisolarCalendar において、2019 年 5 月 1 日から令和時代が始まることになりました。For example, May 1, 2019 marked the beginning of the Reiwa era in the JapaneseCalendar and JapaneseLunisolarCalendar. このような時代 (年号) の変更は、これらのカレンダーを使用するすべてのアプリケーションに影響します。Such a change of era affects all applications that use these calendars. 詳細については「.NET での日本語のカレンダーの新しい時代」をご覧いただき、アプリケーションが影響を受けるかどうかを判断します。See Handling a new era in the Japanese calendar in .NET for more information and to determine whether your applications are affected. 日本語の時代の変更のためのアプリケーションの準備」をご覧いただき、時代の変更に対する状況を確認するために Windows システムでアプリケーションをテストします。See Prepare your application for the Japanese era change for information on testing your applications on Windows systems to ensure their readiness for the era change. 複数の時代 (年号) を含むカレンダーをサポートしている .NET の機能や、複数の時代 (年号) をサポートしているカレンダーを操作する際のベスト プラクティスについては、「Working with eras (時代 (年号) の操作)」をご覧ください。See Working with eras for features in .NET that support calendars with multiple eras and for best practices when working with calendars that support multiple eras.

ParseExact(String, String, IFormatProvider)

指定した書式とカルチャ固有の書式情報を使用して、指定した日付と時刻の文字列形式を等価の DateTime の値に変換します。Converts the specified string representation of a date and time to its DateTime equivalent using the specified format and culture-specific format information. 文字列形式の書式は、指定した書式と完全に一致する必要があります。The format of the string representation must match the specified format exactly.

public:
 static DateTime ParseExact(System::String ^ s, System::String ^ format, IFormatProvider ^ provider);
public static DateTime ParseExact (string s, string format, IFormatProvider provider);
public static DateTime ParseExact (string s, string format, IFormatProvider? provider);
static member ParseExact : string * string * IFormatProvider -> DateTime
Public Shared Function ParseExact (s As String, format As String, provider As IFormatProvider) As DateTime

パラメーター

s
String

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

format
String

s の必要な形式を定義する形式指定子。A format specifier that defines the required format of s. 詳細については、「解説」を参照してください。For more information, see the Remarks section.

provider
IFormatProvider

s に関するカルチャ固有の書式情報を提供するオブジェクト。An object that supplies culture-specific format information about s.

戻り値

DateTime

format および provider で指定された書式に従って表記された s に含まれる日時と等価のオブジェクト。An object that is equivalent to the date and time contained in s, as specified by format and provider.

例外

s または formatnull です。s or format is null.

s または format が空の文字列です。s or format is an empty string.

または-or- s に、format で指定されているパターンに対応する日付と時刻が含まれていません。s does not contain a date and time that corresponds to the pattern specified in format.

または-or- s の時間の部分と AM/PM 指定子が一致していません。The hour component and the AM/PM designator in s do not agree.

ParseExactメソッドの例を次に示します。The following example demonstrates the ParseExact method.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string dateString, format;
      DateTime result;
      CultureInfo provider = CultureInfo.InvariantCulture;

      // Parse date-only value with invariant culture.
      dateString = "06/15/2008";
      format = "d";
      try {
         result = DateTime.ParseExact(dateString, format, provider);
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
      }
      catch (FormatException) {
         Console.WriteLine("{0} is not in the correct format.", dateString);
      }

      // Parse date-only value without leading zero in month using "d" format.
      // Should throw a FormatException because standard short date pattern of
      // invariant culture requires two-digit month.
      dateString = "6/15/2008";
      try {
         result = DateTime.ParseExact(dateString, format, provider);
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
      }
      catch (FormatException) {
         Console.WriteLine("{0} is not in the correct format.", dateString);
      }

      // Parse date and time with custom specifier.
      dateString = "Sun 15 Jun 2008 8:30 AM -06:00";
      format = "ddd dd MMM yyyy h:mm tt zzz";
      try {
         result = DateTime.ParseExact(dateString, format, provider);
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
      }
      catch (FormatException) {
         Console.WriteLine("{0} is not in the correct format.", dateString);
      }

      // Parse date and time with offset but without offset's minutes.
      // Should throw a FormatException because "zzz" specifier requires leading
      // zero in hours.
      dateString = "Sun 15 Jun 2008 8:30 AM -06";
      try {
         result = DateTime.ParseExact(dateString, format, provider);
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
      }
      catch (FormatException) {
         Console.WriteLine("{0} is not in the correct format.", dateString);
      }

      dateString = "15/06/2008 08:30";
      format = "g";
      provider = new CultureInfo("fr-FR");
      try {
         result = DateTime.ParseExact(dateString, format, provider);
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
      }
      catch (FormatException) {
         Console.WriteLine("{0} is not in the correct format.", dateString);
      }

      // Parse a date that includes seconds and milliseconds
      // by using the French (France) and invariant cultures.
      dateString = "18/08/2015 06:30:15.006542";
      format = "dd/MM/yyyy HH:mm:ss.ffffff";
      try {
         result = DateTime.ParseExact(dateString, format, provider);
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
      }
      catch (FormatException) {
         Console.WriteLine("{0} is not in the correct format.", dateString);
      }
   }
}
// The example displays the following output:
//       06/15/2008 converts to 6/15/2008 12:00:00 AM.
//       6/15/2008 is not in the correct format.
//       Sun 15 Jun 2008 8:30 AM -06:00 converts to 6/15/2008 7:30:00 AM.
//       Sun 15 Jun 2008 8:30 AM -06 is not in the correct format.
//       15/06/2008 08:30 converts to 6/15/2008 8:30:00 AM.
//       18/08/2015 06:30:15.006542 converts to 8/18/2015 6:30:15 AM.
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim dateString, format As String  
      Dim result As Date
      Dim provider As CultureInfo = CultureInfo.InvariantCulture

      ' Parse date-only value with invariant culture.
      dateString = "06/15/2008"
      format = "d"
      Try
         result = Date.ParseExact(dateString, format, provider)
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
      Catch e As FormatException
         Console.WriteLine("{0} is not in the correct format.", dateString)
      End Try 

      ' Parse date-only value without leading zero in month using "d" format.
      ' Should throw a FormatException because standard short date pattern of 
      ' invariant culture requires two-digit month.
      dateString = "6/15/2008"
      Try
         result = Date.ParseExact(dateString, format, provider)
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
      Catch e As FormatException
         Console.WriteLine("{0} is not in the correct format.", dateString)
      End Try 
      
      ' Parse date and time with custom specifier.
      dateString = "Sun 15 Jun 2008 8:30 AM -06:00"
      format = "ddd dd MMM yyyy h:mm tt zzz"        
      Try
         result = Date.ParseExact(dateString, format, provider)
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
      Catch e As FormatException
         Console.WriteLine("{0} is not in the correct format.", dateString)
      End Try 
      
      ' Parse date and time with offset but without offset's minutes.
      ' Should throw a FormatException because "zzz" specifier requires leading  
      ' zero in hours.
      dateString = "Sun 15 Jun 2008 8:30 AM -06"
      Try
         result = Date.ParseExact(dateString, format, provider)
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
      Catch e As FormatException
         Console.WriteLine("{0} is not in the correct format.", dateString)
      End Try 
      
      ' Parse a date string using the French (France) culture.
      dateString = "15/06/2008 08:30"
      format = "g"
      provider = New CultureInfo("fr-FR")
      Try
         result = Date.ParseExact(dateString, format, provider)
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
      Catch e As FormatException
         Console.WriteLine("{0} is not in the correct format.", dateString)
      End Try

      ' Parse a date that includes seconds and milliseconds
      ' by using the French (France) and invariant cultures.
      dateString = "18/08/2015 06:30:15.006542"
      format = "dd/MM/yyyy HH:mm:ss.ffffff"
      Try
         result = Date.ParseExact(dateString, format, provider)
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
      Catch e As FormatException
         Console.WriteLine("{0} is not in the correct format.", dateString)
      End Try
   End Sub
End Module
' The example displays the following output:
'       06/15/2008 converts to 6/15/2008 12:00:00 AM.
'       6/15/2008 is not in the correct format.
'       Sun 15 Jun 2008 8:30 AM -06:00 converts to 6/15/2008 7:30:00 AM.
'       Sun 15 Jun 2008 8:30 AM -06 is not in the correct format.
'       15/06/2008 08:30 converts to 6/15/2008 8:30:00 AM.
'       18/08/2015 06:30:15.006542 converts to 8/18/2015 6:30:15 AM.

注釈

メソッドは、 DateTime.ParseExact(String, String, IFormatProvider) 日付の文字列形式を解析します。これは、パラメーターで定義された形式である必要があり format ます。The DateTime.ParseExact(String, String, IFormatProvider) method parses the string representation of a date, which must be in the format defined by the format parameter. また、 <Date> <Time> 日付と時刻の文字列形式のおよび要素がで指定された順序で表示され、で許可されて format いる以外 s の空白を持たない場合もあり format ます。It also requires that the <Date> and <Time> elements of the string representation of a date and time appear in the order specified by format, and that s have no white space other than that permitted by format. format 時刻要素のない日付を定義し、解析操作が成功した場合、結果の DateTime 値の時間は深夜 (00:00:00) になります。If format defines a date with no time element and the parse operation succeeds, the resulting DateTime value has a time of midnight (00:00:00). formatで日付要素が指定されていない時間が定義され、解析操作が成功した場合、結果の値の日付はに DateTime DateTime.Now.Date なります。If format defines a time with no date element and the parse operation succeeds, the resulting DateTime value has a date of DateTime.Now.Date.

sが特定のタイムゾーンの時刻を表しておらず、解析操作が成功した場合、 Kind 戻り DateTime 値のプロパティはに DateTimeKind.Unspecified なります。If s does not represent a time in a particular time zone and the parse operation succeeds, the Kind property of the returned DateTime value is DateTimeKind.Unspecified. s 特定のタイムゾーンの時刻を表し、 format タイムゾーン情報を含めることができる場合 (たとえば、 format が "o"、"r"、または "u" の標準書式指定子に等しい場合、または "z"、"zz"、"zzz" カスタム書式指定子が含まれている場合)、 Kind 戻り値のプロパティ DateTimeDateTimeKind.Local です。If s does represent the time in a particular time zone and format allows time zone information to be present (for example, if format is equal to the "o", "r", or "u" standard format specifiers, or if it contains the "z", "zz", or "zzz" custom format specifiers), the Kind property of the returned DateTime value is DateTimeKind.Local.

パラメーターは、 format 1 つの標準書式指定子、またはの必要な書式を定義する1つ以上のカスタム書式指定子のいずれかを含む文字列です sThe format parameter is a string that contains either a single standard format specifier, or one or more custom format specifiers that define the required format of s. 有効な書式指定コードの詳細については、「 標準の日付と時刻の書式指定文字列 」または「 カスタム日時書式指定文字列」を参照してください。For details about valid formatting codes, see Standard Date and Time Format Strings or Custom Date and Time Format Strings.

注意

formatが、日付または時刻の区切り記号を含まないカスタム書式パターン ("yyyyMMddHHmm" など) である場合は、パラメーターにインバリアントカルチャを使用し、 provider 各カスタム書式指定子の幅の広い形式を使用します。If format is a custom format pattern that does not include date or time separators (such as "yyyyMMddHHmm"), use the invariant culture for the provider parameter and the widest form of each custom format specifier. たとえば、書式パターンで時間を指定する場合は、幅の狭い形式の "H" ではなく、広い形式の "HH" を指定します。For example, if you want to specify hours in the format pattern, specify the wider form, "HH", instead of the narrower form, "H".

で使用される特定の日付と時刻の記号および文字列 (特定の言語の曜日の名前など) は、 s provider s format が標準書式指定子の文字列であるかどうかの正確な形式として、パラメーターによって定義されます。The particular date and time symbols and strings (such as names of the days of the week in a particular language) used in s are defined by the provider parameter, as is the precise format of s if format is a standard format specifier string. providerパラメーターには、次のいずれかを指定できます。The provider parameter can be any of the following:

がの場合は provider nullCultureInfo 現在のカルチャに対応するオブジェクトが使用されます。If provider is null, the CultureInfo object that corresponds to the current culture is used.

注意 (呼び出し元)

.NET Framework 4 では、 ParseExact FormatException 解析対象の文字列に1時間の部分と、アグリーメントに含まれていない AM/PM 指定子が含まれている場合、メソッドはをスローします。In the .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 以前のバージョンでは、AM/PM 指定子は無視されます。In the .NET Framework 3.5 and earlier versions, the AM/PM designator is ignored.

こちらもご覧ください

適用対象

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

指定した書式、カルチャ固有の書式情報、スタイルを使用して、指定した日付と時刻のスパン表現を、それと等価な DateTime に変換します。Converts the specified span representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. 文字列形式の書式は、指定した書式と完全に一致する必要があります。それ以外の場合は、例外がスローされます。The format of the string representation must match the specified format exactly or an exception is thrown.

public static DateTime ParseExact (ReadOnlySpan<char> s, ReadOnlySpan<char> format, IFormatProvider? provider, System.Globalization.DateTimeStyles style = System.Globalization.DateTimeStyles.None);
public static DateTime ParseExact (ReadOnlySpan<char> s, ReadOnlySpan<char> format, IFormatProvider provider, System.Globalization.DateTimeStyles style = System.Globalization.DateTimeStyles.None);
static member ParseExact : ReadOnlySpan<char> * ReadOnlySpan<char> * IFormatProvider * System.Globalization.DateTimeStyles -> DateTime
Public Shared Function ParseExact (s As ReadOnlySpan(Of Char), format As ReadOnlySpan(Of Char), provider As IFormatProvider, Optional style As DateTimeStyles = System.Globalization.DateTimeStyles.None) As DateTime

パラメーター

s
ReadOnlySpan<Char>

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

format
ReadOnlySpan<Char>

s の必要な書式を定義する書式指定子を表す文字を含んでいるスパン。A span containing the characters that represent a format specifier that defines the required format of s.

provider
IFormatProvider

s に関するカルチャ固有の書式情報を提供するオブジェクト。An object that supplies culture-specific formatting information about s.

style
DateTimeStyles

ss に指定できるスタイル要素、または s から DateTime 値への変換に関する追加情報を提供する列挙値のビットごとの組み合わせ。A bitwise combination of the enumeration values that provides additional information about s, about style elements that may be present in s, or about the conversion from s to a DateTime value. 通常指定する値は、None です。A typical value to specify is None.

戻り値

DateTime

formatprovider、および style で指定された書式に従って表記された s に含まれる日時と等価のオブジェクト。An object that is equivalent to the date and time contained in s, as specified by format, provider, and style.

適用対象

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

指定した書式の配列、カルチャ固有の書式情報、スタイルを使用して、指定した日付と時刻のスパン表現を、それと等価な DateTime に変換します。Converts the specified span representation of a date and time to its DateTime equivalent using the specified array of formats, culture-specific format information, and style. 文字列形式の書式は、指定した書式の少なくとも 1 つと完全に一致する必要があります。それ以外の場合は、例外がスローされます。The format of the string representation must match at least one of the specified formats exactly or an exception is thrown.

public static DateTime ParseExact (ReadOnlySpan<char> s, string[] formats, IFormatProvider? provider, System.Globalization.DateTimeStyles style = System.Globalization.DateTimeStyles.None);
public static DateTime ParseExact (ReadOnlySpan<char> s, string[] formats, IFormatProvider provider, System.Globalization.DateTimeStyles style = System.Globalization.DateTimeStyles.None);
static member ParseExact : ReadOnlySpan<char> * string[] * IFormatProvider * System.Globalization.DateTimeStyles -> DateTime
Public Shared Function ParseExact (s As ReadOnlySpan(Of Char), formats As String(), provider As IFormatProvider, Optional style As DateTimeStyles = System.Globalization.DateTimeStyles.None) As DateTime

パラメーター

s
ReadOnlySpan<Char>

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

formats
String[]

s の許可された形式の配列。An array of allowable formats of s.

provider
IFormatProvider

s に関するカルチャ固有の書式情報を提供するオブジェクト。An object that supplies culture-specific format information about s.

style
DateTimeStyles

s で使用可能な書式を示す、列挙値のビットごとの組み合わせ。A bitwise combination of enumeration values that indicates the permitted format of s. 通常指定する値は、None です。A typical value to specify is None.

戻り値

DateTime

formatsprovider、および style で指定された書式に従って表記された s に含まれる日時と等価のオブジェクト。An object that is equivalent to the date and time contained in s, as specified by formats, provider, and style.

適用対象

ParseExact(String, String, IFormatProvider, DateTimeStyles)

指定した書式、カルチャ固有の書式情報、およびスタイルを使用して、指定した日付と時刻の文字列形式を等価の DateTime に変換します。Converts the specified string representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. 文字列形式の書式は、指定した書式と完全に一致する必要があります。それ以外の場合は、例外がスローされます。The format of the string representation must match the specified format exactly or an exception is thrown.

public:
 static DateTime ParseExact(System::String ^ s, System::String ^ format, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style);
public static DateTime ParseExact (string s, string format, IFormatProvider provider, System.Globalization.DateTimeStyles style);
public static DateTime ParseExact (string s, string format, IFormatProvider? provider, System.Globalization.DateTimeStyles style);
static member ParseExact : string * string * IFormatProvider * System.Globalization.DateTimeStyles -> DateTime
Public Shared Function ParseExact (s As String, format As String, provider As IFormatProvider, style As DateTimeStyles) As DateTime

パラメーター

s
String

変換する日付と時刻を格納した文字列。A string containing a date and time to convert.

format
String

s の必要な形式を定義する形式指定子。A format specifier that defines the required format of s. 詳細については、「解説」を参照してください。For more information, see the Remarks section.

provider
IFormatProvider

s に関するカルチャ固有の書式情報を提供するオブジェクト。An object that supplies culture-specific formatting information about s.

style
DateTimeStyles

ss に指定できるスタイル要素、または s から DateTime 値への変換に関する追加情報を提供する列挙値のビットごとの組み合わせ。A bitwise combination of the enumeration values that provides additional information about s, about style elements that may be present in s, or about the conversion from s to a DateTime value. 通常指定する値は、None です。A typical value to specify is None.

戻り値

DateTime

formatprovider、および style で指定された書式に従って表記された s に含まれる日時と等価のオブジェクト。An object that is equivalent to the date and time contained in s, as specified by format, provider, and style.

例外

s または formatnull です。s or format is null.

s または format が空の文字列です。s or format is an empty string.

または-or- s に、format で指定されているパターンに対応する日付と時刻が含まれていません。s does not contain a date and time that corresponds to the pattern specified in format.

または-or- s の時間の部分と AM/PM 指定子が一致していません。The hour component and the AM/PM designator in s do not agree.

styleDateTimeStyles 値の正しくない組み合わせが含まれています。style contains an invalid combination of DateTimeStyles values. たとえば、AssumeLocalAssumeUniversal の両方です。For example, both AssumeLocal and AssumeUniversal.

ParseExact(String, String, IFormatProvider)メソッドの例を次に示します。The following example demonstrates the ParseExact(String, String, IFormatProvider) method. styles DateTimeStyles.None によって先頭のスペースが許可されていないため、パラメーターがと等しい場合は、文字列 "5/01/2009 8:30 AM" を正常に解析できないことに注意して format ください。Note that the string " 5/01/2009 8:30 AM" cannot be parsed successfully when the styles parameter equals DateTimeStyles.None because leading spaces are not allowed by format. さらに、"MM/dd/yyyyhh: mm" のを使用して文字列 "5/01/2009 09:00" を正常に解析することはできません。これは、では、 format 月の番号の前に、必要に応じて先行ゼロが表示されないため format です。Additionally, the string "5/01/2009 09:00" cannot be parsed successfully with a format of "MM/dd/yyyyhh:mm" because the date string does not precede the month number with a leading zero, as format requires.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      CultureInfo enUS = new CultureInfo("en-US");
      string dateString;
      DateTime dateValue;

      // Parse date with no style flags.
      dateString = " 5/01/2009 8:30 AM";
      try {
         dateValue = DateTime.ParseExact(dateString, "g", enUS, DateTimeStyles.None);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
                           dateValue.Kind);
      }
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }
      // Allow a leading space in the date string.
      try {
         dateValue = DateTime.ParseExact(dateString, "g", enUS, DateTimeStyles.AllowLeadingWhite);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
                           dateValue.Kind);
      }
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }

      // Use custom formats with M and MM.
      dateString = "5/01/2009 09:00";
      try {
         dateValue = DateTime.ParseExact(dateString, "M/dd/yyyy hh:mm", enUS, DateTimeStyles.None);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
                           dateValue.Kind);
      }
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }
      // Allow a leading space in the date string.
      try {
         dateValue = DateTime.ParseExact(dateString, "MM/dd/yyyy hh:mm", enUS, DateTimeStyles.None);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
                           dateValue.Kind);
      }
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }

      // Parse a string with time zone information.
      dateString = "05/01/2009 01:30:42 PM -05:00";
      try {
         dateValue = DateTime.ParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, DateTimeStyles.None);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
                           dateValue.Kind);
      }
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }
      // Allow a leading space in the date string.
      try {
         dateValue = DateTime.ParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS,
                                     DateTimeStyles.AdjustToUniversal);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
                           dateValue.Kind);
      }
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }

      // Parse a string representing UTC.
      dateString = "2008-06-11T16:11:20.0904778Z";
      try {
         dateValue = DateTime.ParseExact(dateString, "o", CultureInfo.InvariantCulture,
                                     DateTimeStyles.None);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
                           dateValue.Kind);
      }
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }
      try {
         dateValue = DateTime.ParseExact(dateString, "o", CultureInfo.InvariantCulture,
                                     DateTimeStyles.RoundtripKind);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
                           dateValue.Kind);
      }
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }
   }
}
// The example displays the following output:
//    ' 5/01/2009 8:30 AM' is not in an acceptable format.
//    Converted ' 5/01/2009 8:30 AM' to 5/1/2009 8:30:00 AM (Unspecified).
//    Converted '5/01/2009 09:00' to 5/1/2009 9:00:00 AM (Unspecified).
//    '5/01/2009 09:00' is not in an acceptable format.
//    Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 11:30:42 AM (Local).
//    Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 6:30:42 PM (Utc).
//    Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 9:11:20 AM (Local).
//    Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 4:11:20 PM (Utc).
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim enUS As New CultureInfo("en-US") 
      Dim dateString As String
      Dim dateValue As Date
      
      ' Parse date with no style flags.
      dateString = " 5/01/2009 8:30 AM"
      Try
         dateValue = Date.ParseExact(dateString, "g", enUS, DateTimeStyles.None)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try
      ' Allow a leading space in the date string.
      Try
         dateValue = Date.ParseExact(dateString, "g", enUS, DateTimeStyles.AllowLeadingWhite)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try
      
      ' Use custom formats with M and MM.
      dateString = "5/01/2009 09:00"
      Try
         dateValue = Date.ParseExact(dateString, "M/dd/yyyy hh:mm", enUS, DateTimeStyles.None)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try
      ' Allow a leading space in the date string.
      Try
         dateValue = Date.ParseExact(dateString, "MM/dd/yyyy hh:mm", enUS, DateTimeStyles.None)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try

      ' Parse a string with time zone information.
      dateString = "05/01/2009 01:30:42 PM -05:00" 
      Try
         dateValue = Date.ParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, DateTimeStyles.None)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try
      ' Allow a leading space in the date string.
      Try
         dateValue = Date.ParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, _
                                     DateTimeStyles.AdjustToUniversal)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try
           
      ' Parse a string representing UTC.
      dateString = "2008-06-11T16:11:20.0904778Z"
      Try
         dateValue = Date.ParseExact(dateString, "o", CultureInfo.InvariantCulture, _
                                     DateTimeStyles.None)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try
      Try
         dateValue = Date.ParseExact(dateString, "o", CultureInfo.InvariantCulture, _
                                     DateTimeStyles.RoundtripKind)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try
   End Sub
End Module
' The example displays the following output:
'    ' 5/01/2009 8:30 AM' is not in an acceptable format.
'    Converted ' 5/01/2009 8:30 AM' to 5/1/2009 8:30:00 AM (Unspecified).
'    Converted '5/01/2009 09:00' to 5/1/2009 9:00:00 AM (Unspecified).
'    '5/01/2009 09:00' is not in an acceptable format.
'    Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 11:30:42 AM (Local).
'    Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 6:30:42 PM (Utc).
'    Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 9:11:20 AM (Local).
'    Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 4:11:20 PM (Utc).

注釈

メソッドは、 DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) 日付の文字列形式を解析します。これは、パラメーターで定義された形式である必要があり format ます。The DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) method parses the string representation of a date, which must be in a format defined by the format parameter. また、の日付と時刻の要素は、で s 指定された順序で表示される必要があり format ます。It also requires that the date and time elements in s appear in the order specified by format. sがパラメーターのパターンと一致しない場合、 format パラメーターで定義されたバリエーションがあると、 style メソッドはをスロー FormatException します。If s does not match the pattern of the format parameter, with any variations defined by the style parameter, the method throws a FormatException. これに対して、メソッドは、 DateTime.Parse(String, IFormatProvider, DateTimeStyles) 書式プロバイダーのオブジェクトによって認識される形式のいずれかで、日付の文字列形式を解析し DateTimeFormatInfo ます。In contrast, the DateTime.Parse(String, IFormatProvider, DateTimeStyles) method parses the string representation of a date in any one of the formats recognized by the format provider's DateTimeFormatInfo object. DateTime.Parse(String, IFormatProvider, DateTimeStyles)また、メソッドを使用すると、の日付と時刻の要素 s を任意の順序で表示できます。The DateTime.Parse(String, IFormatProvider, DateTimeStyles) method also allows the date and time elements in s to appear in any order.

パラメーターに s 時刻のみが含まれ、日付が含まれていない場合は、パラメーターにフラグが含まれていない限り、現在の日付が使用され style DateTimeStyles.NoCurrentDateDefault ます。この場合、既定の日付 ( DateTime.Date.MinValue ) が使用されます。If the s parameter contains only a time and no date, the current date is used unless the style parameter includes the DateTimeStyles.NoCurrentDateDefault flag, in which case the default date (DateTime.Date.MinValue) is used. パラメーターに s 日付のみが含まれ、時刻が指定されていない場合は、深夜 (00:00:00) が使用されます。If the s parameter contains only a date and no time, midnight (00:00:00) is used. パラメーターでは、 style パラメーターに s 先頭、内部、または末尾の空白文字を含めることができるかどうかも決定されます。The style parameter also determines whether the s parameter can contain leading, inner, or trailing white space characters.

sにタイムゾーン情報が含まれていない場合、 Kind 返されるオブジェクトのプロパティ DateTime はに DateTimeKind.Unspecified なります。If s contains no time zone information, the Kind property of the returned DateTime object is DateTimeKind.Unspecified. この動作は、 DateTimeStyles.AssumeLocal プロパティがである値を返すフラグを使用する DateTime Kind か、 DateTimeKind.Local プロパティがである DateTimeStyles.AssumeUniversal 値を DateTimeStyles.AdjustToUniversal 返すフラグとフラグ DateTime Kind DateTimeKind.Utc を使用することによって変更できます。This behavior can be changed by using the DateTimeStyles.AssumeLocal flag, which returns a DateTime value whose Kind property is DateTimeKind.Local, or by using the DateTimeStyles.AssumeUniversal and DateTimeStyles.AdjustToUniversal flags, which returns a DateTime value whose Kind property is DateTimeKind.Utc. sにタイムゾーン情報が含まれている場合は、必要に応じて時刻が現地時刻に変換され、 Kind 返されたオブジェクトのプロパティ DateTime がに設定され DateTimeKind.Local ます。If s contains time zone information, the time is converted to local time, if necessary, and the Kind property of the returned DateTime object is set to DateTimeKind.Local. この動作は、 DateTimeStyles.RoundtripKind 協定世界時 (UTC) を現地時刻に変換しないようにするフラグを使用して、プロパティをに設定することによって変更でき Kind DateTimeKind.Utc ます。This behavior can be changed by using the DateTimeStyles.RoundtripKind flag to not convert Coordinated Universal Time (UTC) to a local time and to set the Kind property to DateTimeKind.Utc.

パラメーターは、 format パラメーターに必要なパターンを定義し s ます。The format parameter defines the required pattern of the s parameter. これは、 カスタム日時書式指定文字列 テーブルの1つ以上のカスタム書式指定子、または 標準の日時書式指定文字列 の表から定義済みのパターンを識別する1つの標準書式指定子で構成されます。It can consist of either one or more custom format specifiers from the Custom Date and Time Format Strings table, or a single standard format specifier, which identifies a predefined pattern, from the Standard Date and Time Format Strings table.

カスタム書式パターンで日付または時刻の区切り記号を使用しない場合は、パラメーターにインバリアントカルチャを使用し、 provider 各カスタム書式指定子の幅が最も広い形式を使用します。If you do not use date or time separators in a custom format pattern, use the invariant culture for the provider parameter and the widest form of each custom format specifier. たとえば、パターンに時間を指定する場合は、幅の狭い形式の "H" ではなく、広い形式の "HH" を指定します。For example, if you want to specify hours in the pattern, specify the wider form, "HH", instead of the narrower form, "H".

注意

解析操作を成功させるために1つの形式に準拠するように要求するのではなく s 、メソッドを呼び出し DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) て、複数の許可された形式を指定することができます。Rather than requiring that s conform to a single format for the parse operation to succeed, you can call the DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) method and specify multiple permitted formats. これにより、解析操作が成功する可能性が高くなります。This makes the parse operation more likely to succeed.

パラメーターには、で定義され styles DateTimeStyles ていない空白をで使用できるかどうかを決定する列挙体のメンバーが1つ以上含まれてい format s ます。これは、解析操作の正確な動作を制御します。The styles parameter includes one or more members of the DateTimeStyles enumeration that determine whether and where white space not defined by format can appear in s and that control the precise behavior of the parse operation. 次の表では、列挙体の各メンバーが DateTimeStyles メソッドの操作に与える影響について説明し ParseExact(String, String, IFormatProvider, DateTimeStyles) ます。The following table describes how each member of the DateTimeStyles enumeration affects the operation of the ParseExact(String, String, IFormatProvider, DateTimeStyles) method.

DateTimeStyles メンバーDateTimeStyles member 説明Description
AdjustToUniversal を解析し、必要に応じ s て UTC に変換します。Parses s and, if necessary, converts it to UTC. にタイムゾーンオフセットが含まれている s 場合、または s にタイムゾーン情報が含まれておらず、フラグが含まれている場合 styles DateTimeStyles.AssumeLocal 、メソッドは文字列を解析し、を呼び出して、 ToUniversalTime 返された DateTime 値を UTC に変換し、 Kind プロパティをに設定し DateTimeKind.Utc ます。If s includes a time zone offset, or if s contains no time zone information but styles includes the DateTimeStyles.AssumeLocal flag, the method parses the string, calls ToUniversalTime to convert the returned DateTime value to UTC, and sets the Kind property to DateTimeKind.Utc. s UTC を表すことを示している場合、またはにタイムゾーン情報が含まれておらず、フラグが含まれている場合 s styles DateTimeStyles.AssumeUniversal 、メソッドは文字列を解析し、返された値に対してタイムゾーン変換を実行せず DateTime に、プロパティをに設定し Kind DateTimeKind.Utc ます。If s indicates that it represents UTC, or if s does not contain time zone information but styles includes the DateTimeStyles.AssumeUniversal flag, the method parses the string, performs no time zone conversion on the returned DateTime value, and sets the Kind property to DateTimeKind.Utc. それ以外の場合、フラグは無効です。In all other cases, the flag has no effect.
AllowInnerWhite で定義されていない空白を format 、個別の日付または時刻要素の間に表示できることを指定します。Specifies that white space not defined by format can appear between any individual date or time element.
AllowLeadingWhite で定義されていない空白をの先頭に表示することを指定し format s ます。Specifies that white space not defined by format can appear at the beginning of s.
AllowTrailingWhite で定義されていない空白が format の末尾に表示されることを指定し s ます。Specifies that white space not defined by format can appear at the end of s.
AllowWhiteSpaces s よって定義されていない先頭、内部、および末尾の空白を含めることができることを指定し format ます。Specifies that s may contain leading, inner, and trailing white spaces not defined by format.
AssumeLocal s タイムゾーン情報がない場合、現地時刻を表すと想定されることを指定します。Specifies that if s lacks any time zone information, it is assumed to represent a local time. フラグが指定されていない限り DateTimeStyles.AdjustToUniversalKind 戻り DateTime 値のプロパティはに設定され DateTimeKind.Local ます。Unless the DateTimeStyles.AdjustToUniversal flag is present, the Kind property of the returned DateTime value is set to DateTimeKind.Local.
AssumeUniversal s タイムゾーン情報を持たない場合、UTC を表すと想定されることを指定します。Specifies that if s lacks any time zone information, it is assumed to represent UTC. DateTimeStyles.AdjustToUniversalフラグが存在しない場合、メソッドは、返された DateTime 値を UTC から現地時刻に変換し、その Kind プロパティをに設定し DateTimeKind.Local ます。Unless the DateTimeStyles.AdjustToUniversal flag is present, the method converts the returned DateTime value from UTC to local time and sets its Kind property to DateTimeKind.Local.
NoCurrentDateDefault sに日付情報のない時刻が含まれている場合、戻り値の日付はに設定され DateTime.MinValue.Date ます。If s contains time without date information, the date of the return value is set to DateTime.MinValue.Date.
None sパラメーターは、既定値を使用して解析されます。The s parameter is parsed using default values. に存在しない空白は許可されません formatNo white space other than that present in format is allowed. s 日付要素がない場合、戻り値の日付 DateTime は1/1/0001 に設定されます。If s lacks a date component, the date of the returned DateTime value is set to 1/1/0001. sにタイムゾーン情報が含まれていない場合 Kind は、返されたオブジェクトのプロパティ DateTime がに設定され DateTimeKind.Unspecified ます。If s contains no time zone information, the Kind property of the returned DateTime object is set to DateTimeKind.Unspecified. タイムゾーン情報がに存在する場合、 s 時刻は現地時刻に変換され、 Kind 返された DateTime オブジェクトのプロパティはに設定され DateTimeKind.Local ます。If time zone information is present in s, the time is converted to local time and the Kind property of the returned DateTime object is set to DateTimeKind.Local.
RoundtripKind タイムゾーン情報を含む文字列の場合、は、 DateTime プロパティがに設定された値の日付と時刻への変換を防止しようとし Kind DateTimeKind.Local ます。For strings that contain time zone information, tries to prevent the conversion to a DateTime value date and time with its Kind property set to DateTimeKind.Local. このフラグは、主に UTC 時刻からローカル時刻への変換を防止します。This flag primarily prevents the conversion of UTC times to local times.

で使用される特定の日付と時刻の記号および文字列 (特定の言語での曜日の名前など) は、 s provider s format が標準書式指定子文字列であるかどうかの正確な形式として、パラメーターによって定義されます。The particular date and time symbols and strings (such as the names of the days of the week in a particular language) used in s are defined by the provider parameter, as is the precise format of s if format is a standard format specifier string. providerパラメーターには、次のいずれかを指定できます。The provider parameter can be any of the following:

がの場合は provider nullCultureInfo 現在のカルチャに対応するオブジェクトが使用されます。If provider is null, the CultureInfo object that corresponds to the current culture is used.

注意 (呼び出し元)

.NET Framework 4 では、 ParseExact FormatException 解析対象の文字列に1時間の部分と、アグリーメントに含まれていない AM/PM 指定子が含まれている場合、メソッドはをスローします。In the .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 以前のバージョンでは、AM/PM 指定子は無視されます。In the .NET Framework 3.5 and earlier versions, the AM/PM designator is ignored.

こちらもご覧ください

適用対象

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

指定した書式の配列、カルチャ固有の書式情報、およびスタイルを使用して、指定した日付と時刻の文字列形式を等価の DateTime に変換します。Converts the specified string representation of a date and time to its DateTime equivalent using the specified array of formats, culture-specific format information, and style. 文字列形式の書式は、指定した書式の少なくとも 1 つと完全に一致する必要があります。それ以外の場合は、例外がスローされます。The format of the string representation must match at least one of the specified formats exactly or an exception is thrown.

public:
 static DateTime ParseExact(System::String ^ s, cli::array <System::String ^> ^ formats, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style);
public static DateTime ParseExact (string s, string[] formats, IFormatProvider provider, System.Globalization.DateTimeStyles style);
public static DateTime ParseExact (string s, string[] formats, IFormatProvider? provider, System.Globalization.DateTimeStyles style);
static member ParseExact : string * string[] * IFormatProvider * System.Globalization.DateTimeStyles -> DateTime
Public Shared Function ParseExact (s As String, formats As String(), provider As IFormatProvider, style As DateTimeStyles) As DateTime

パラメーター

s
String

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

formats
String[]

s の許可された形式の配列。An array of allowable formats of s. 詳細については、「解説」を参照してください。For more information, see the Remarks section.

provider
IFormatProvider

s に関するカルチャ固有の書式情報を提供するオブジェクト。An object that supplies culture-specific format information about s.

style
DateTimeStyles

s で使用可能な書式を示す、列挙値のビットごとの組み合わせ。A bitwise combination of enumeration values that indicates the permitted format of s. 通常指定する値は、None です。A typical value to specify is None.

戻り値

DateTime

formatsprovider、および style で指定された書式に従って表記された s に含まれる日時と等価のオブジェクト。An object that is equivalent to the date and time contained in s, as specified by formats, provider, and style.

例外

s または formatsnull です。s or formats is null.

s が空の文字列です。s is an empty string.

または-or- formats の要素は空の文字列です。an element of formats is an empty string.

または-or- s には、 formatsのどの要素に対応する日時も含まれていません。s does not contain a date and time that corresponds to any element of formats.

または-or- s の時間の部分と AM/PM 指定子が一致していません。The hour component and the AM/PM designator in s do not agree.

styleDateTimeStyles 値の正しくない組み合わせが含まれています。style contains an invalid combination of DateTimeStyles values. たとえば、AssumeLocalAssumeUniversal の両方です。For example, both AssumeLocal and AssumeUniversal.

次の例では、メソッドを使用し DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) て、さまざまな形式の文字列を正常に解析できることを確認します。The following example uses the DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) method to ensure that a string in a number of possible formats can be successfully parsed .

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string[] formats= {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt",
                         "MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss",
                         "M/d/yyyy hh:mm tt", "M/d/yyyy hh tt",
                         "M/d/yyyy h:mm", "M/d/yyyy h:mm",
                         "MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm",
                         "MM/d/yyyy HH:mm:ss.ffffff" };
      string[] dateStrings = {"5/1/2009 6:32 PM", "05/01/2009 6:32:05 PM",
                              "5/1/2009 6:32:00", "05/01/2009 06:32",
                              "05/01/2009 06:32:00 PM", "05/01/2009 06:32:00",
                              "08/28/2015 16:17:39.125", "08/28/2015 16:17:39.125000" };
      DateTime dateValue;

      foreach (string dateString in dateStrings)
      {
         try {
            dateValue = DateTime.ParseExact(dateString, formats,
                                            new CultureInfo("en-US"),
                                            DateTimeStyles.None);
            Console.WriteLine("Converted '{0}' to {1}.", dateString, dateValue);
         }
         catch (FormatException) {
            Console.WriteLine("Unable to convert '{0}' to a date.", dateString);
         }
      }
   }
}
// The example displays the following output:
//       Converted '5/1/2009 6:32 PM' to 5/1/2009 6:32:00 PM.
//       Converted '05/01/2009 6:32:05 PM' to 5/1/2009 6:32:05 PM.
//       Converted '5/1/2009 6:32:00' to 5/1/2009 6:32:00 AM.
//       Converted '05/01/2009 06:32' to 5/1/2009 6:32:00 AM.
//       Converted '05/01/2009 06:32:00 PM' to 5/1/2009 6:32:00 PM.
//       Converted '05/01/2009 06:32:00' to 5/1/2009 6:32:00 AM.
//       Unable to convert '08/28/2015 16:17:39.125' to a date.
//       Converted '08/28/2015 16:17:39.125000' to 8/28/2015 4:17:39 PM.
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim formats() As String = {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt", _
                                 "MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss", _
                                 "M/d/yyyy hh:mm tt", "M/d/yyyy hh tt", _
                                 "M/d/yyyy h:mm", "M/d/yyyy h:mm", _
                                 "MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm",
                                 "MM/d/yyyy HH:mm:ss.ffffff" }
      Dim dateStrings() As String = {"5/1/2009 6:32 PM", "05/01/2009 6:32:05 PM", _
                                     "5/1/2009 6:32:00", "05/01/2009 06:32", _
                                     "05/01/2009 06:32:00 PM", "05/01/2009 06:32:00",
                                     "08/28/2015 16:17:39.125", "08/28/2015 16:17:39.125000" }

      Dim dateValue As DateTime
      
      For Each dateString As String In dateStrings
         Try
            dateValue = DateTime.ParseExact(dateString, formats, _
                                            New CultureInfo("en-US"), _
                                            DateTimeStyles.None)
            Console.WriteLine("Converted '{0}' to {1}.", dateString, dateValue)
         Catch e As FormatException
            Console.WriteLine("Unable to convert '{0}' to a date.", dateString)
         End Try                                               
      Next
   End Sub
End Module
' The example displays the following output:
'       Converted '5/1/2009 6:32 PM' to 5/1/2009 6:32:00 PM.
'       Converted '05/01/2009 6:32:05 PM' to 5/1/2009 6:32:05 PM.
'       Converted '5/1/2009 6:32:00' to 5/1/2009 6:32:00 AM.
'       Converted '05/01/2009 06:32' to 5/1/2009 6:32:00 AM.
'       Converted '05/01/2009 06:32:00 PM' to 5/1/2009 6:32:00 PM.
'       Converted '05/01/2009 06:32:00' to 5/1/2009 6:32:00 AM.
'       Unable to convert '08/28/2015 16:17:39.125' to a date.
'       Converted '08/28/2015 16:17:39.125000' to 8/28/2015 4:17:39 PM.

注釈

メソッドは、 DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) パラメーターに割り当てられているパターンのいずれかと一致する日付の文字列形式を解析し formats ます。The DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) method parses the string representation of a date that matches any one of the patterns assigned to the formats parameter. 文字列が、 s パラメーターで定義されているいずれかのバリエーションと一致しない場合 styles 、メソッドはをスロー FormatException します。If the string s does not match any one of these patterns with any of the variations defined by the styles parameter, the method throws a FormatException. s1 つの書式パターンではなく、複数の書式指定パターンとの比較を除けば、このオーバーロードはメソッドと同じように動作 DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) します。Aside from comparing s to multiple formatting patterns, rather than to a single formatting pattern, this overload behaves identically to the DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) method.

パラメーターには、 s 解析する日付と時刻が格納されます。The s parameter contains the date and time to parse. パラメーターに s 時刻のみが含まれ、日付が含まれていない場合は、パラメーターにフラグが含まれていない限り、現在の日付が使用され style DateTimeStyles.NoCurrentDateDefault ます。この場合、既定の日付 ( DateTime.Date.MinValue ) が使用されます。If the s parameter contains only a time and no date, the current date is used unless the style parameter includes the DateTimeStyles.NoCurrentDateDefault flag, in which case the default date (DateTime.Date.MinValue) is used. パラメーターに s 日付のみが含まれ、時刻が指定されていない場合は、深夜 (00:00:00) が使用されます。If the s parameter contains only a date and no time, midnight (00:00:00) is used. また、パラメーターには、 style s のいずれかの書式指定文字列によって許可されていない空白文字を、パラメーターに含めることができるかどうかも決定され formats ます。The style parameter also determines whether the s parameter can contain leading, inner, or trailing white space characters other than those permitted by one of the format strings in formats.

sにタイムゾーン情報が含まれていない場合、 Kind 返されるオブジェクトのプロパティ DateTime はに DateTimeKind.Unspecified なります。If s contains no time zone information, the Kind property of the returned DateTime object is DateTimeKind.Unspecified. この動作は、 DateTimeStyles.AssumeLocal プロパティがである値を返すフラグを使用する DateTime Kind か、 DateTimeKind.Local プロパティがである DateTimeStyles.AssumeUniversal 値を DateTimeStyles.AdjustToUniversal 返すフラグとフラグ DateTime Kind DateTimeKind.Utc を使用することによって変更できます。This behavior can be changed by using the DateTimeStyles.AssumeLocal flag, which returns a DateTime value whose Kind property is DateTimeKind.Local, or by using the DateTimeStyles.AssumeUniversal and DateTimeStyles.AdjustToUniversal flags, which returns a DateTime value whose Kind property is DateTimeKind.Utc. sにタイムゾーン情報が含まれている場合は、必要に応じて時刻が現地時刻に変換され、 Kind 返されたオブジェクトのプロパティ DateTime がに設定され DateTimeKind.Local ます。If s contains time zone information, the time is converted to local time, if necessary, and the Kind property of the returned DateTime object is set to DateTimeKind.Local. この動作は、 DateTimeStyles.RoundtripKind 協定世界時 (UTC) を現地時刻に変換しないようにフラグを使用し、プロパティをに設定することによって変更でき Kind DateTimeKind.Utc ます。This behavior can be changed by using the DateTimeStyles.RoundtripKind flag to not convert Coordinated Universal Time (UTC) to a local time and set the Kind property to DateTimeKind.Utc.

パラメーターには formats パターンの配列が含まれており、そのいずれかが、 s 解析操作が成功する場合に正確に一致する必要があります。The formats parameter contains an array of patterns, one of which s must match exactly if the parse operation is to succeed. パラメーターのパターンは、 formats カスタム日時書式指定文字列 の表にある1つ以上のカスタム書式指定子、または 標準の日時書式指定文字列 の表から定義済みのパターンを識別する単一の標準書式指定子で構成されます。The patterns in the formats parameter consists of one or more custom format specifiers from the Custom Date and Time Format Strings table, or a single standard format specifier, which identifies a predefined pattern, from the Standard Date and Time Format Strings table.

カスタム書式パターンで日付または時刻の区切り記号を使用しない場合は、パラメーターにインバリアントカルチャを使用し、 provider 各カスタム書式指定子の幅が最も広い形式を使用します。If you do not use date or time separators in a custom format pattern, use the invariant culture for the provider parameter and the widest form of each custom format specifier. たとえば、パターンに時間を指定する場合は、幅の狭い形式の "H" ではなく、広い形式の "HH" を指定します。For example, if you want to specify hours in the pattern, specify the wider form, "HH", instead of the narrower form, "H".

パラメーターには、で定義され styles DateTimeStyles ていない空白をで使用できるかどうかを決定する列挙体のメンバーが1つ以上含まれてい format s ます。これは、解析操作の正確な動作を制御します。The styles parameter includes one or more members of the DateTimeStyles enumeration that determine whether and where white space not defined by format can appear in s and that control the precise behavior of the parse operation. 次の表では、列挙体の各メンバーが DateTimeStyles メソッドの操作に与える影響について説明し ParseExact(String, String, IFormatProvider, DateTimeStyles) ます。The following table describes how each member of the DateTimeStyles enumeration affects the operation of the ParseExact(String, String, IFormatProvider, DateTimeStyles) method.

DateTimeStyles メンバーDateTimeStyles member 説明Description
AdjustToUniversal を解析し、必要に応じ s て UTC に変換します。Parses s and, if necessary, converts it to UTC. にタイムゾーンオフセットが含まれている s 場合、または s にタイムゾーン情報が含まれておらず、フラグが含まれている場合 styles DateTimeStyles.AssumeLocal 、メソッドは文字列を解析し、を呼び出して、 ToUniversalTime 返された DateTime 値を UTC に変換し、 Kind プロパティをに設定し DateTimeKind.Utc ます。If s includes a time zone offset, or if s contains no time zone information but styles includes the DateTimeStyles.AssumeLocal flag, the method parses the string, calls ToUniversalTime to convert the returned DateTime value to UTC, and sets the Kind property to DateTimeKind.Utc. s UTC を表すことを示している場合、またはにタイムゾーン情報が含まれておらず、フラグが含まれている場合 s styles DateTimeStyles.AssumeUniversal 、メソッドは文字列を解析し、返された値に対してタイムゾーン変換を実行せず DateTime に、プロパティをに設定し Kind DateTimeKind.Utc ます。If s indicates that it represents UTC, or if s does not contain time zone information but styles includes the DateTimeStyles.AssumeUniversal flag, the method parses the string, performs no time zone conversion on the returned DateTime value, and sets the Kind property to DateTimeKind.Utc. それ以外の場合、フラグは無効です。In all other cases, the flag has no effect.
AllowInnerWhite で定義されていない空白を format 、個別の日付または時刻要素の間に表示できることを指定します。Specifies that white space not defined by format can appear between any individual date or time element.
AllowLeadingWhite で定義されていない空白をの先頭に表示することを指定し format s ます。Specifies that white space not defined by format can appear at the beginning of s.
AllowTrailingWhite で定義されていない空白が format の末尾に表示されることを指定し s ます。Specifies that white space not defined by format can appear at the end of s.
AllowWhiteSpaces s よって定義されていない先頭、内部、および末尾の空白を含めることができることを指定し format ます。Specifies that s may contain leading, inner, and trailing white spaces not defined by format.
AssumeLocal s タイムゾーン情報がない場合、現地時刻を表すと想定されることを指定します。Specifies that if s lacks any time zone information, it is assumed to represent a local time. フラグが指定されていない限り DateTimeStyles.AdjustToUniversalKind 戻り DateTime 値のプロパティはに設定され DateTimeKind.Local ます。Unless the DateTimeStyles.AdjustToUniversal flag is present, the Kind property of the returned DateTime value is set to DateTimeKind.Local.
AssumeUniversal s タイムゾーン情報を持たない場合、UTC を表すと想定されることを指定します。Specifies that if s lacks any time zone information, it is assumed to represent UTC. DateTimeStyles.AdjustToUniversalフラグが存在しない場合、メソッドは、返された DateTime 値を UTC から現地時刻に変換し、その Kind プロパティをに設定し DateTimeKind.Local ます。Unless the DateTimeStyles.AdjustToUniversal flag is present, the method converts the returned DateTime value from UTC to local time and sets its Kind property to DateTimeKind.Local.
NoCurrentDateDefault sに日付情報のない時刻が含まれている場合、戻り値の日付はに設定され DateTime.MinValue.Date ます。If s contains time without date information, the date of the return value is set to DateTime.MinValue.Date.
None sパラメーターは、既定値を使用して解析されます。The s parameter is parsed using default values. に存在しない空白は許可されません formatNo white space other than that present in format is allowed. s 日付要素がない場合、戻り値の日付 DateTime は1/1/0001 に設定されます。If s lacks a date component, the date of the returned DateTime value is set to 1/1/0001. sにタイムゾーン情報が含まれていない場合 Kind は、返されたオブジェクトのプロパティ DateTime がに設定され DateTimeKind.Unspecified ます。If s contains no time zone information, the Kind property of the returned DateTime object is set to DateTimeKind.Unspecified. タイムゾーン情報がに存在する場合、 s 時刻は現地時刻に変換され、 Kind 返された DateTime オブジェクトのプロパティはに設定され DateTimeKind.Local ます。If time zone information is present in s, the time is converted to local time and the Kind property of the returned DateTime object is set to DateTimeKind.Local.
RoundtripKind タイムゾーン情報を含む文字列の場合、は、そのプロパティがに設定された日付と時刻への変換を防止しようとし Kind DateTimeKind.Local ます。For strings that contain time zone information, tries to prevent the conversion to a date and time with its Kind property set to DateTimeKind.Local. このフラグは、主に UTC 時刻からローカル時刻への変換を防止します。This flag primarily prevents the conversion of UTC times to local times.

で使用される特定の日付と時刻の記号および文字列 (特定の言語での曜日の名前など) は、 s provider s format が標準書式指定子文字列であるかどうかの正確な形式として、パラメーターによって定義されます。The particular date and time symbols and strings (such as the names of the days of the week in a particular language) used in s are defined by the provider parameter, as is the precise format of s if format is a standard format specifier string. providerパラメーターには、次のいずれかを指定できます。The provider parameter can be any of the following:

がの場合は provider nullCultureInfo 現在のカルチャに対応するオブジェクトが使用されます。If provider is null, the CultureInfo object that corresponds to the current culture is used.

注意 (呼び出し元)

.NET Framework 4 では、 ParseExact FormatException 解析対象の文字列に1時間の部分と、アグリーメントに含まれていない AM/PM 指定子が含まれている場合、メソッドはをスローします。In the .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 以前のバージョンでは、AM/PM 指定子は無視されます。In the .NET Framework 3.5 and earlier versions, the AM/PM designator is ignored.

こちらもご覧ください

適用対象