DateTime.TryParse メソッド

定義

指定した文字列形式の日時を対応する DateTime 表現に変換し、変換に成功したかどうかを示す値を返します。Converts the specified string representation of a date and time to its DateTime equivalent and returns a value that indicates whether the conversion succeeded.

オーバーロード

TryParse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime)

指定したカルチャ固有の書式情報と書式スタイルを使用して、日付と時刻のスパン表現を、それと等価な DateTime に変換し、変換が成功したかどうかを示す値を返します。Converts the span representation of a date and time to its DateTime equivalent using the specified culture-specific format information and formatting style, and returns a value that indicates whether the conversion succeeded.

TryParse(String, DateTime)

指定した文字列形式の日時を対応する DateTime 表現に変換し、変換に成功したかどうかを示す値を返します。Converts the specified string representation of a date and time to its DateTime equivalent and returns a value that indicates whether the conversion succeeded.

TryParse(String, IFormatProvider, DateTimeStyles, DateTime)

指定したカルチャ固有の書式情報と書式スタイルを使用して、指定した文字列形式の日付と時刻をそれと等価の DateTime に変換し、変換に成功したかどうかを示す値を返します。Converts the specified string representation of a date and time to its DateTime equivalent using the specified culture-specific format information and formatting style, and returns a value that indicates whether the conversion succeeded.

TryParse(ReadOnlySpan<Char>, DateTime)

指定した日付と時刻の文字スパンを、それと等価な DateTime に変換し、変換が成功したかどうかを示す値を返します。Converts the specified char span of a date and time to its DateTime equivalent and returns a value that indicates whether the conversion succeeded.

注釈

重要

和暦の時代 (年号) は天皇の代に基づいているため、変更されることが予想されます。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.

TryParse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime)

指定したカルチャ固有の書式情報と書式スタイルを使用して、日付と時刻のスパン表現を、それと等価な DateTime に変換し、変換が成功したかどうかを示す値を返します。Converts the span representation of a date and time to its DateTime equivalent using the specified culture-specific format information and formatting style, and returns a value that indicates whether the conversion succeeded.

public:
 static bool TryParse(ReadOnlySpan<char> s, IFormatProvider ^ provider, System::Globalization::DateTimeStyles styles, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParse (ReadOnlySpan<char> s, IFormatProvider provider, System.Globalization.DateTimeStyles styles, out DateTime result);
static member TryParse : ReadOnlySpan<char> * IFormatProvider * System.Globalization.DateTimeStyles * DateTime -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), provider As IFormatProvider, styles As DateTimeStyles, ByRef result As DateTime) As Boolean

パラメーター

s
ReadOnlySpan<Char>

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

provider
IFormatProvider

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

styles
DateTimeStyles

現在のタイム ゾーンまたは現在の日付と関連させて、解析された日付をどのように解釈するかを定義する列挙値のビットごとの組み合わせ。A bitwise combination of enumeration values that defines how to interpret the parsed date in relation to the current time zone or the current date. 通常指定する値は、None です。A typical value to specify is None.

result
DateTime

変換に成功した場合は、このメソッドから戻る時点で、DateTime に格納された日時と等しい s 値が格納されます。変換に失敗した場合は MinValue が格納されます。When this method returns, contains the DateTime value equivalent to the date and time contained in s, if the conversion succeeded, or MinValue if the conversion failed. s パラメーターが null の場合、空の文字列 ("") の場合、または日付と時刻を表す有効な文字列形式が含まれていない場合は、変換に失敗します。The conversion fails if the s parameter is null, is an empty string (""), or does not contain a valid string representation of a date and time. このパラメーターは初期化せずに渡されます。This parameter is passed uninitialized.

戻り値

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

TryParse(String, DateTime)

指定した文字列形式の日時を対応する DateTime 表現に変換し、変換に成功したかどうかを示す値を返します。Converts the specified string representation of a date and time to its DateTime equivalent and returns a value that indicates whether the conversion succeeded.

public:
 static bool TryParse(System::String ^ s, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParse (string s, out DateTime result);
static member TryParse : string * DateTime -> bool
Public Shared Function TryParse (s As String, ByRef result As DateTime) As Boolean

パラメーター

s
String

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

result
DateTime

変換に成功した場合は、このメソッドから戻る時点で、DateTime に格納された日時と等しい s 値が格納されます。変換に失敗した場合は MinValue が格納されます。When this method returns, contains the DateTime value equivalent to the date and time contained in s, if the conversion succeeded, or MinValue if the conversion failed. s パラメーターが null の場合、空の文字列 ("") の場合、または日付と時刻を表す有効な文字列形式が含まれていない場合は、変換に失敗します。The conversion fails if the s parameter is null, is an empty string (""), or does not contain a valid string representation of a date and time. このパラメーターは初期化せずに渡されます。This parameter is passed uninitialized.

戻り値

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

次の例では、DateTime.TryParse(String, DateTime) メソッドに複数の日付と時刻の文字列を渡します。The following example passes a number of date and time strings to the DateTime.TryParse(String, DateTime) method.

using namespace System;
using namespace System::Globalization;

void main()
{
   array<String^>^ dateStrings = { "05/01/2009 14:57:32.8", "2009-05-01 14:57:32.8", 
                                   "2009-05-01T14:57:32.8375298-04:00", 
                                    "5/01/2008 14:57:32.80 -07:00", 
                                    "1 May 2008 2:57:32.8 PM", "16-05-2009 1:00:32 PM", 
                                    "Fri, 15 May 2009 20:10:57 GMT" };
   DateTime dateValue;

   Console::WriteLine("Attempting to parse strings using {0} culture.", 
                     CultureInfo::CurrentCulture->Name);
   for each (String^ dateString in dateStrings)
   {
      if (DateTime::TryParse(dateString, dateValue)) 
         Console::WriteLine("  Converted '{0}' to {1} ({2}).", dateString, 
                           dateValue, dateValue.Kind);
      else
         Console::WriteLine("  Unable to parse '{0}'.", dateString);
   }
}
// The example displays the following output: 
//    Attempting to parse strings using en-US culture. 
//       Converted '05/01/2009 14:57:32.8' to 5/1/2009 2:57:32 PM (Unspecified). 
//       Converted '2009-05-01 14:57:32.8' to 5/1/2009 2:57:32 PM (Unspecified). 
//       Converted '2009-05-01T14:57:32.8375298-04:00' to 5/1/2009 11:57:32 AM (Local). 
//       Converted '5/01/2008 14:57:32.80 -07:00' to 5/1/2008 2:57:32 PM (Local). 
//       Converted '1 May 2008 2:57:32.8 PM' to 5/1/2008 2:57:32 PM (Unspecified). 
//       Unable to parse '16-05-2009 1:00:32 PM'. 
//       Converted 'Fri, 15 May 2009 20:10:57 GMT' to 5/15/2009 1:10:57 PM (Local).
using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string[] dateStrings = {"05/01/2009 14:57:32.8", "2009-05-01 14:57:32.8",
                              "2009-05-01T14:57:32.8375298-04:00", "5/01/2008",
                              "5/01/2008 14:57:32.80 -07:00", 
                              "1 May 2008 2:57:32.8 PM", "16-05-2009 1:00:32 PM", 
                              "Fri, 15 May 2009 20:10:57 GMT" };
      DateTime dateValue;
      
      Console.WriteLine("Attempting to parse strings using {0} culture.", 
                        CultureInfo.CurrentCulture.Name);
      foreach (string dateString in dateStrings)
      {
         if (DateTime.TryParse(dateString, out dateValue)) 
            Console.WriteLine("  Converted '{0}' to {1} ({2}).", dateString, 
                              dateValue, dateValue.Kind);
         else
            Console.WriteLine("  Unable to parse '{0}'.", dateString);
      }
   }
}
// The example displays output like the following:
//    Attempting to parse strings using en-US culture.
//      Converted '05/01/2009 14:57:32.8' to 5/1/2009 2:57:32 PM (Unspecified).
//      Converted '2009-05-01 14:57:32.8' to 5/1/2009 2:57:32 PM (Unspecified).
//      Converted '2009-05-01T14:57:32.8375298-04:00' to 5/1/2009 11:57:32 AM (Local).
//
//      Converted '5/01/2008' to 5/1/2008 12:00:00 AM (Unspecified).
//      Converted '5/01/2008 14:57:32.80 -07:00' to 5/1/2008 2:57:32 PM (Local).
//      Converted '1 May 2008 2:57:32.8 PM' to 5/1/2008 2:57:32 PM (Unspecified).
//      Unable to parse '16-05-2009 1:00:32 PM'.
//      Converted 'Fri, 15 May 2009 20:10:57 GMT' to 5/15/2009 1:10:57 PM (Local).
Imports System.Globalization

Public Module Example
   Public Sub Main()
      Dim dateStrings() As String = {"05/01/2009 14:57:32.8", "2009-05-01 14:57:32.8",
                                     "2009-05-01T14:57:32.8375298-04:00", "5/01/2008",
                                     "5/01/2008 14:57:32.80 -07:00",
                                     "1 May 2008 2:57:32.8 PM", "16-05-2009 1:00:32 PM",
                                     "Fri, 15 May 2009 20:10:57 GMT"}
      Dim dateValue As Date
      
      Console.WriteLine("Attempting to parse strings using {0} culture.", _
                        CultureInfo.CurrentCulture.Name)
      For Each dateString As String In dateStrings
         If Date.TryParse(dateString, dateValue) Then
            Console.WriteLine("  Converted '{0}' to {1} ({2}).", dateString, _
                              dateValue, dateValue.Kind)
         Else
            Console.WriteLine("  Unable to parse '{0}'.", dateString)
         End If
      Next
   End Sub
End Module
' The example displays output like the following:
'    Attempting to parse strings using en-US culture.
'      Converted '05/01/2009 14:57:32.8' to 5/1/2009 2:57:32 PM (Unspecified).
'      Converted '2009-05-01 14:57:32.8' to 5/1/2009 2:57:32 PM (Unspecified).
'      Converted '2009-05-01T14:57:32.8375298-04:00' to 5/1/2009 11:57:32 AM (Local).
'
'      Converted '5/01/2008' to 5/1/2008 12:00:00 AM (Unspecified).
'      Converted '5/01/2008 14:57:32.80 -07:00' to 5/1/2008 2:57:32 PM (Local).
'      Converted '1 May 2008 2:57:32.8 PM' to 5/1/2008 2:57:32 PM (Unspecified).
'      Unable to parse '16-05-2009 1:00:32 PM'.
'      Converted 'Fri, 15 May 2009 20:10:57 GMT' to 5/15/2009 1:10:57 PM (Local).

注釈

DateTime.TryParse(String, DateTime) メソッドは、変換に失敗した場合に TryParse(String, DateTime) メソッドが例外をスローしない点を除いて、DateTime.Parse(String) メソッドに似ています。The DateTime.TryParse(String, DateTime) method is similar to the DateTime.Parse(String) method, except that the TryParse(String, DateTime) method does not throw an exception if the conversion fails.

現在の DateTimeFormatInfo オブジェクトの書式情報を使用して、現在のスレッドカルチャによって暗黙的に指定された s 文字列が解析されます。The string s is parsed using formatting information in the current DateTimeFormatInfo object, which is supplied implicitly by the current thread culture.

このメソッドは、可能であれば、認識されていないデータを無視し、存在しない月、日、および年の情報を現在の日付に設定しようとします。This method tries to ignore unrecognized data, if possible, and fills in missing month, day, and year information with the current date. s に日付と時刻が含まれていない場合、このメソッドは時刻が12:00 午前0時であることを前提としています。If s contains only a date and no time, this method assumes the time is 12:00 midnight. s に2桁の年の日付部分が含まれている場合、Calendar.TwoDigitYearMax プロパティの値に基づいて、現在のカルチャの現在の暦の年に変換されます。If s includes a date component with a two-digit year, it is converted to a year in the current culture's current calendar based on the value of the Calendar.TwoDigitYearMax property. s 内の先頭、内部、または末尾の空白文字は無視されます。Any leading, inner, or trailing white space character in s is ignored. 日付と時刻は、先頭と末尾の符号記号 (' # '、U + 0023) のペアで囲むことができ、1つ以上の NULL 文字 (U + 0000) で trailed できます。The date and time can be bracketed with a pair of leading and trailing NUMBER SIGN characters ('#', U+0023), and can be trailed with one or more NULL characters (U+0000).

DateTime.TryParse(String, DateTime) メソッドは、現在のカルチャの書式設定規則を使用して、日付と時刻の文字列形式を解析しようとするため、異なるカルチャで特定の文字列を解析しようとすると、失敗するか、異なる結果を返すことがあります。Because the DateTime.TryParse(String, DateTime) method tries to parse the string representation of a date and time using the formatting rules of the current culture, trying to parse a particular string across different cultures can either fail or return different results. 特定の日付と時刻の形式が異なるロケールで解析される場合は、DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) メソッドまたは TryParseExact メソッドのいずれかのオーバーロードを使用して、書式指定子を指定します。If a specific date and time format will be parsed across different locales, use the DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) method or one of the overloads of the TryParseExact method and provide a format specifier.

現在の暦で s が閏月の閏年の文字列形式である場合、メソッドは s を正常に解析します。If s is the string representation of a leap day in a leap year in the current calendar, the method parses s successfully. 現在のカルチャの現在の暦におけるうるう年以外の日付の文字列表現が s の場合、解析操作は失敗し、メソッドは falseを返します。If s is the string representation of a leap day in a non-leap year in the current culture's current calendar, the parse operation fails and the method returns false.

s にタイムゾーン情報が含まれていない場合、result には、メソッドが返されたときに Kind プロパティが DateTimeKind.Unspecified である DateTime 値が含まれます。If s contains no time zone information, result contains a DateTime value whose Kind property is DateTimeKind.Unspecified when the method returns. 解析する文字列にタイムゾーン情報が含まれている場合、result には、メソッドから制御が戻ったときに Kind プロパティを DateTimeKind.Local する DateTime 値が含まれます。If the string to be parsed contains time zone information, result contains a DateTime value whose Kind property is DateTimeKind.Local when the method returns.

注意 (呼び出し元)

書式設定は、現在の DateTimeFormatInfo オブジェクトのプロパティの影響を受けます。既定では、コントロールパネルの [地域と言語のオプション] 項目から派生します。Formatting is influenced by properties of the current DateTimeFormatInfo object, which by default are derived from the Regional and Language Options item in Control Panel. 現在の DateSeparator および TimeSeparator プロパティが同じ値に設定されている場合、TryParse メソッドは予期せず失敗し、False を返します。The TryParse method can unexpectedly fail and return False if the current DateSeparator and TimeSeparator properties are set to the same value.

こちらもご覧ください

TryParse(String, IFormatProvider, DateTimeStyles, DateTime)

指定したカルチャ固有の書式情報と書式スタイルを使用して、指定した文字列形式の日付と時刻をそれと等価の DateTime に変換し、変換に成功したかどうかを示す値を返します。Converts the specified string representation of a date and time to its DateTime equivalent using the specified culture-specific format information and formatting style, and returns a value that indicates whether the conversion succeeded.

public:
 static bool TryParse(System::String ^ s, IFormatProvider ^ provider, System::Globalization::DateTimeStyles styles, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParse (string s, IFormatProvider provider, System.Globalization.DateTimeStyles styles, out DateTime result);
static member TryParse : string * IFormatProvider * System.Globalization.DateTimeStyles * DateTime -> bool
Public Shared Function TryParse (s As String, provider As IFormatProvider, styles As DateTimeStyles, ByRef result As DateTime) As Boolean

パラメーター

s
String

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

provider
IFormatProvider

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

styles
DateTimeStyles

現在のタイム ゾーンまたは現在の日付と関連させて、解析された日付をどのように解釈するかを定義する列挙値のビットごとの組み合わせ。A bitwise combination of enumeration values that defines how to interpret the parsed date in relation to the current time zone or the current date. 通常指定する値は、None です。A typical value to specify is None.

result
DateTime

変換に成功した場合は、このメソッドから戻る時点で、DateTime に格納された日時と等しい s 値が格納されます。変換に失敗した場合は MinValue が格納されます。When this method returns, contains the DateTime value equivalent to the date and time contained in s, if the conversion succeeded, or MinValue if the conversion failed. s パラメーターが null の場合、空の文字列 ("") の場合、または日付と時刻を表す有効な文字列形式が含まれていない場合は、変換に失敗します。The conversion fails if the s parameter is null, is an empty string (""), or does not contain a valid string representation of a date and time. このパラメーターは初期化せずに渡されます。This parameter is passed uninitialized.

戻り値

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

例外

styles は有効な DateTimeStyles 値ではありません。styles is not a valid DateTimeStyles value.

- または --or- stylesDateTimeStyles 値の正しくない組み合わせが含まれています (たとえば、AssumeLocalAssumeUniversal の両方などです)。styles contains an invalid combination of DateTimeStyles values (for example, both AssumeLocal and AssumeUniversal).

provider はニュートラル カルチャであり、解析操作で使用することはできません。provider is a neutral culture and cannot be used in a parsing operation.

次の例は、DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) メソッドを示しています。The following example illustrates the DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) method.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string dateString;
      CultureInfo culture;
      DateTimeStyles styles;
      DateTime dateResult;
      
      // Parse a date and time with no styles.
      dateString = "03/01/2009 10:00 AM";
      culture = CultureInfo.CreateSpecificCulture("en-US");
      styles = DateTimeStyles.None;
      if (DateTime.TryParse(dateString, culture, styles, out dateResult))
         Console.WriteLine("{0} converted to {1} {2}.", 
                           dateString, dateResult, dateResult.Kind);
      else
         Console.WriteLine("Unable to convert {0} to a date and time.", 
                           dateString);
      
      // Parse the same date and time with the AssumeLocal style.
      styles = DateTimeStyles.AssumeLocal;
      if (DateTime.TryParse(dateString, culture, styles, out dateResult))
         Console.WriteLine("{0} converted to {1} {2}.", 
                           dateString, dateResult, dateResult.Kind);
      else
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString);
      
      // Parse a date and time that is assumed to be local.
      // This time is five hours behind UTC. The local system's time zone is 
      // eight hours behind UTC.
      dateString = "2009/03/01T10:00:00-5:00";
      styles = DateTimeStyles.AssumeLocal;
      if (DateTime.TryParse(dateString, culture, styles, out dateResult))
         Console.WriteLine("{0} converted to {1} {2}.", 
                           dateString, dateResult, dateResult.Kind);
      else
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString);
      
      // Attempt to convert a string in improper ISO 8601 format.
      dateString = "03/01/2009T10:00:00-5:00";
      if (DateTime.TryParse(dateString, culture, styles, out dateResult))
         Console.WriteLine("{0} converted to {1} {2}.", 
                           dateString, dateResult, dateResult.Kind);
      else
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString);

      // Assume a date and time string formatted for the fr-FR culture is the local 
      // time and convert it to UTC.
      dateString = "2008-03-01 10:00";
      culture = CultureInfo.CreateSpecificCulture("fr-FR");
      styles = DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeLocal;
      if (DateTime.TryParse(dateString, culture, styles, out dateResult))
         Console.WriteLine("{0} converted to {1} {2}.", 
                           dateString, dateResult, dateResult.Kind);
      else
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString);
   }
}
// The example displays the following output to the console:
//       03/01/2009 10:00 AM converted to 3/1/2009 10:00:00 AM Unspecified.
//       03/01/2009 10:00 AM converted to 3/1/2009 10:00:00 AM Local.
//       2009/03/01T10:00:00-5:00 converted to 3/1/2009 7:00:00 AM Local.
//       Unable to convert 03/01/2009T10:00:00-5:00 to a date and time.
//       2008-03-01 10:00 converted to 3/1/2008 6:00:00 PM Utc.
Imports System.Globalization

Public Module Example
   Public Sub Main()
      Dim dateString As String
      Dim culture As CultureInfo
      Dim styles As DateTimeStyles 
      Dim dateResult As DateTime
      
      ' Parse a date and time with no styles.
      dateString = "03/01/2009 10:00 AM"
      culture = CultureInfo.CreateSpecificCulture("en-US")
      styles = DateTimeStyles.None
      If DateTime.TryParse(dateString, culture, styles, dateResult) Then
         Console.WriteLine("{0} converted to {1} {2}.", _
                           dateString, dateResult, dateResult.Kind)
      Else
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
      End If      
      
      ' Parse the same date and time with the AssumeLocal style.
      styles = DateTimeStyles.AssumeLocal
      If DateTime.TryParse(dateString, culture, styles, dateResult)
         Console.WriteLine("{0} converted to {1} {2}.", _
                           dateString, dateResult, dateResult.Kind)
      Else
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
      End If      
      
      ' Parse a date and time that is assumed to be local.
      ' This time is five hours behind UTC. The local system's time zone is 
      ' eight hours behind UTC.
      dateString = "2009/03/01T10:00:00-5:00"
      styles = DateTimeStyles.AssumeLocal
      If DateTime.TryParse(dateString, culture, styles, dateResult)
         Console.WriteLine("{0} converted to {1} {2}.", _
                           dateString, dateResult, dateResult.Kind)
      Else
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
      End If      
      
      ' Attempt to convert a string in improper ISO 8601 format.
      dateString = "03/01/2009T10:00:00-5:00"
      If DateTime.TryParse(dateString, culture, styles, dateResult)
         Console.WriteLine("{0} converted to {1} {2}.", _
                           dateString, dateResult, dateResult.Kind)
      Else
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
      End If      

      ' Assume a date and time string formatted for the fr-FR culture is the local 
      ' time and convert it to UTC.
      dateString = "2008-03-01 10:00"
      culture = CultureInfo.CreateSpecificCulture("fr-FR")
      styles = DateTimeStyles.AdjustToUniversal Or DateTimeStyles.AssumeLocal
      If DateTime.TryParse(dateString, culture, styles, dateResult)
         Console.WriteLine("{0} converted to {1} {2}.", _
                           dateString, dateResult, dateResult.Kind)
      Else
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
      End If      
   End Sub
End Module
' The example displays the following output to the console:
'       03/01/2009 10:00 AM converted to 3/1/2009 10:00:00 AM Unspecified.
'       03/01/2009 10:00 AM converted to 3/1/2009 10:00:00 AM Local.
'       2009/03/01T10:00:00-5:00 converted to 3/1/2009 7:00:00 AM Local.
'       Unable to convert 03/01/2009T10:00:00-5:00 to a date and time.
'       2008-03-01 10:00 converted to 3/1/2008 6:00:00 PM Utc.

注釈

DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) メソッドは、日付、時刻、およびタイムゾーンの情報を格納できる文字列を解析します。The DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) method parses a string that can contain date, time, and time zone information. これは DateTime.Parse(String, IFormatProvider, DateTimeStyles) メソッドに似ていますが、変換に失敗した場合に DateTime.TryParse(String, DateTime) メソッドが例外をスローしない点が異なります。It is similar to the DateTime.Parse(String, IFormatProvider, DateTimeStyles) method, except that the DateTime.TryParse(String, DateTime) method does not throw an exception if the conversion fails.

このメソッドは、認識されていないデータを無視して s を完全に解析しようとします。This method attempts to ignore unrecognized data and parse s completely. s に時刻が含まれていても、日付が含まれていない場合、既定では現在の日付がメソッドに置き換えられます。また styles NoCurrentDateDefault フラグが含まれている場合は、DateTime.Date.MinValue置換されます。If s contains a time but no date, the method by default substitutes the current date or, if styles includes the NoCurrentDateDefault flag, it substitutes DateTime.Date.MinValue. s に日付が含まれていても、時間がない場合は、既定の時刻として12:00 午前0時が使用されます。If s contains a date but no time, 12:00 midnight is used as the default time. 日付が存在するが、その年の部分が2桁のみで構成されている場合、Calendar.TwoDigitYearMax プロパティの値に基づいて、provider パラメーターの現在の暦で年に変換されます。If a date is present but its year component consists of only two digits, it is converted to a year in the provider parameter's current calendar based on the value of the Calendar.TwoDigitYearMax property. s 内の先頭、内部、または末尾の空白文字はすべて無視されます。Any leading, inner, or trailing white space characters in s are ignored. 日付と時刻は、先頭と末尾の符号記号 (' # '、U + 0023) のペアで囲むことができ、1つ以上の NULL 文字 (U + 0000) で trailed できます。The date and time can be bracketed with a pair of leading and trailing NUMBER SIGN characters ('#', U+0023), and can be trailed with one or more NULL characters (U+0000).

日付と時刻の要素、および日付と時刻で使用される名前と記号の特定の有効な形式は、provider パラメーターによって定義されます。これは、次のいずれかになります。Specific valid formats for date and time elements, as well as the names and symbols used in dates and times, are defined by the provider parameter, which can be any of the following:

providernull の場合は、現在のカルチャが使用されます。If provider is null, the current culture is used.

現在の暦で s が閏月の閏年の文字列形式である場合、メソッドは s を正常に解析します。If s is the string representation of a leap day in a leap year in the current calendar, the method parses s successfully. s が、providerの現在の暦におけるうるう年以外の日付の文字列表現の場合、解析操作は失敗し、メソッドは falseを返します。If s is the string representation of a leap day in a non-leap year in the current calendar of provider, the parse operation fails and the method returns false.

styles パラメーターは、解析された文字列の正確な解釈と、解析操作でどのように処理するかを定義します。The styles parameter defines the precise interpretation of the parsed string and how the parse operation should handle it. 次の表に示すように、DateTimeStyles 列挙体の1つ以上のメンバーを指定できます。It can be one or more members of the DateTimeStyles enumeration, as described in the following table.

DateTimeStyles メンバーDateTimeStyles member 説明Description
AdjustToUniversal s を解析し、必要に応じて UTC に変換します。Parses s and, if necessary, converts it to UTC. s にタイムゾーンオフセットが含まれている場合、または s にタイムゾーン情報が含まれておらず、stylesDateTimeStyles.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 有効ですが、この値は無視されます。Although valid, this value is ignored. sの日付と時刻の要素では、内側の空白文字を使用できます。Inner white space is permitted in the date and time elements of s.
AllowLeadingWhite 有効ですが、この値は無視されます。Although valid, this value is ignored. 先頭の空白文字は、sの日付と時刻の要素で使用できます。Leading white space is permitted in the date and time elements of s.
AllowTrailingWhite 有効ですが、この値は無視されます。Although valid, this value is ignored. sの日付と時刻の要素では、末尾の空白文字を使用できます。Trailing white space is permitted in the date and time elements of s.
AllowWhiteSpaces s に、先頭、内部、および末尾の空白を含めることができることを指定します。Specifies that s may contain leading, inner, and trailing white spaces. これが既定の動作です。This is the default behavior. DateTimeStyles.Noneなど、より制限の厳しい DateTimeStyles 列挙値を指定することによってオーバーライドすることはできません。It cannot be overridden by supplying a more restrictive DateTimeStyles enumeration value such as DateTimeStyles.None.
AssumeLocal タイムゾーン情報が s ない場合は、現地時刻を表すと想定されます。Specifies that if s lacks any time zone information, it is assumed to represent a local time. DateTimeStyles.AdjustToUniversal フラグが存在しない場合、返される DateTime 値の Kind プロパティは 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.
None 有効ですが、この値は無視されます。Although valid, this value is ignored.
RoundtripKind タイムゾーン情報を含む文字列の場合、は、Kind プロパティを DateTimeKind.Localに設定して、日付と時刻の文字列を DateTime 値に変換できないようにします。For strings that contain time zone information, tries to prevent the conversion of a date and time string to a DateTime value with its Kind property set to DateTimeKind.Local. 通常、このような文字列は、"o"、"r"、"u" のいずれかの標準書式指定子を使用して DateTime.ToString(String) メソッドを呼び出すことによって作成されます。Typically, such a string is created by calling the DateTime.ToString(String) method using either the "o", "r", or "u" standard format specifiers.

s タイムゾーン情報が含まれていない場合、DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) メソッドは、DateTimeKind.Unspecified フラグがそれ以外の場合を示す場合を除き、Kind プロパティが styles である DateTime 値を返します。If s contains no time zone information, the DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) method returns a DateTime value whose Kind property is DateTimeKind.Unspecified unless a styles flag indicates otherwise. s にタイムゾーンまたはタイムゾーンオフセット情報が含まれている場合、DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) メソッドは必要な時間変換を実行し、次のいずれかを返します。If s includes time zone or time zone offset information, the DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) method performs any necessary time conversion and returns one of the following:

この動作は、DateTimeStyles.RoundtripKind フラグを使用してオーバーライドできます。This behavior can be overridden by using the DateTimeStyles.RoundtripKind flag.

カスタムカルチャの解析Parsing Custom Cultures

カスタムカルチャに対して生成された日付と時刻の文字列を解析する場合は、解析操作が成功する確率を上げるために、TryParse メソッドの代わりに TryParseExact メソッドを使用します。If you parse a date and time string generated for a custom culture, use the TryParseExact method instead of the TryParse method to improve the probability that the parse operation will succeed. カスタムカルチャの日付と時刻の文字列は、複雑で解析が困難な場合があります。A custom culture date and time string can be complicated and difficult to parse. TryParse メソッドは、いくつかの暗黙的な解析パターンを使用して文字列を解析しようとしますが、これらはすべて失敗する可能性があります。The TryParse method attempts to parse a string with several implicit parse patterns, all of which might fail. これに対し、TryParseExact メソッドでは、成功する可能性がある1つ以上の正確な解析パターンを明示的に指定する必要があります。In contrast, the TryParseExact method requires you to explicitly designate one or more exact parse patterns that are likely to succeed.

カスタムカルチャの詳細については、System.Globalization.CultureAndRegionInfoBuilder クラスを参照してください。For more information about custom cultures, see the System.Globalization.CultureAndRegionInfoBuilder class.

注意 (呼び出し元)

書式設定は、現在の DateTimeFormatInfo オブジェクトのプロパティの影響を受けます。このオブジェクトは、provider パラメーターによって指定されます。Formatting is influenced by properties of the current DateTimeFormatInfo object, which is supplied by the provider parameter. 現在の DateSeparator および TimeSeparator プロパティが同じ値に設定されている場合、TryParse メソッドは予期せず失敗し、False を返します。The TryParse method can unexpectedly fail and return False if the current DateSeparator and TimeSeparator properties are set to the same value.

こちらもご覧ください

TryParse(ReadOnlySpan<Char>, DateTime)

指定した日付と時刻の文字スパンを、それと等価な DateTime に変換し、変換が成功したかどうかを示す値を返します。Converts the specified char span of a date and time to its DateTime equivalent and returns a value that indicates whether the conversion succeeded.

public:
 static bool TryParse(ReadOnlySpan<char> s, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParse (ReadOnlySpan<char> s, out DateTime result);
static member TryParse : ReadOnlySpan<char> * DateTime -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), ByRef result As DateTime) As Boolean

パラメーター

s
ReadOnlySpan<Char>

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

result
DateTime

変換に成功した場合は、このメソッドから戻る時点で、DateTime に格納された日時と等しい s 値が格納されます。変換に失敗した場合は MinValue が格納されます。When this method returns, contains the DateTime value equivalent to the date and time contained in s, if the conversion succeeded, or MinValue if the conversion failed. s パラメーターが null の場合、空の文字列 ("") の場合、または日付と時刻を表す有効な文字列形式が含まれていない場合は、変換に失敗します。The conversion fails if the s parameter is null, is an empty string (""), or does not contain a valid string representation of a date and time. このパラメーターは初期化せずに渡されます。This parameter is passed uninitialized.

戻り値

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

適用対象