TimeSpan.TryParse メソッド

定義

指定した文字列形式の時間間隔を等価の TimeSpan に変換し、変換に成功したかどうかを示す値を返します。

オーバーロード

TryParse(ReadOnlySpan<Char>, IFormatProvider, TimeSpan)

指定したカルチャ固有の書式情報を使用して、時間間隔のスパン表現を等価の TimeSpan に変換し、変換に成功したかどうかを示す値を返します。

TryParse(ReadOnlySpan<Char>, TimeSpan)

時間間隔のスパン表現を等価の TimeSpan に変換し、変換に成功したかどうかを示す値を返します。

TryParse(String, TimeSpan)

時間間隔の文字列形式を等価の TimeSpan に変換し、変換に成功したかどうかを示す値を返します。

TryParse(String, IFormatProvider, TimeSpan)

指定したカルチャ固有の書式情報を使用して、時間間隔の文字列形式を等価の TimeSpan に変換し、変換に成功したかどうかを示す値を返します。

TryParse(ReadOnlySpan<Char>, IFormatProvider, TimeSpan)

指定したカルチャ固有の書式情報を使用して、時間間隔のスパン表現を等価の TimeSpan に変換し、変換に成功したかどうかを示す値を返します。

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

パラメーター

input
ReadOnlySpan<Char>

変換する時間間隔を表す文字を格納しているスパン。

formatProvider
IFormatProvider

カルチャ固有の書式情報を提供するオブジェクト。

result
TimeSpan

このメソッドが返されるときに、input で指定した時間間隔を表すオブジェクトを格納します。変換に失敗した場合は、Zero を格納します。 このパラメーターは初期化せずに渡されます。

戻り値

Boolean

input が正常に変換された場合は true。それ以外の場合は falseinput パラメーターが null または Empty である場合、書式が無効な場合、表される時間間隔が MinValue より短いか MaxValue より長い場合、または日、時間、分、秒の各構成要素の少なくとも 1 つが有効な範囲にない場合、この操作は false を返します。

適用対象

TryParse(ReadOnlySpan<Char>, TimeSpan)

時間間隔のスパン表現を等価の TimeSpan に変換し、変換に成功したかどうかを示す値を返します。

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

パラメーター

s
ReadOnlySpan<Char>

変換する時間間隔を表す文字を格納しているスパン。

result
TimeSpan

このメソッドが返されるときに、s で指定した時間間隔を表すオブジェクトを格納します。変換に失敗した場合は、Zero を格納します。 このパラメーターは初期化せずに渡されます。

戻り値

Boolean

s が正常に変換された場合は true。それ以外の場合は falses パラメーターが null または Empty である場合、書式が無効な場合、表される時間間隔が MinValue より短いか MaxValue より長い場合、または日、時間、分、秒の各構成要素の少なくとも 1 つが有効な範囲にない場合、この操作は false を返します。

適用対象

TryParse(String, TimeSpan)

時間間隔の文字列形式を等価の TimeSpan に変換し、変換に成功したかどうかを示す値を返します。

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

パラメーター

s
String

変換する時間間隔を指定する文字列。

result
TimeSpan

このメソッドが返されるときに、s で指定した時間間隔を表すオブジェクトを格納します。変換に失敗した場合は、Zero を格納します。 このパラメーターは初期化せずに渡されます。

戻り値

Boolean

s が正常に変換された場合は true。それ以外の場合は falses パラメーターが null または Empty である場合、書式が無効な場合、表される時間間隔が MinValue より短いか MaxValue より長い場合、または日、時間、分、秒の各構成要素の少なくとも 1 つが有効な範囲にない場合、この操作は false を返します。

次の例では、メソッドを使用し TryParse TimeSpan て、有効な文字列からオブジェクトを作成 TimeSpan し、タイムスパン文字列が無効であるために解析操作がいつ失敗したかを示します。

using System;

public class TryParse
{
   private static void ParseTimeSpan(string intervalStr)
   {
      // Write the first part of the output line.
      Console.Write( "{0,20}   ", intervalStr );

      // Parse the parameter, and then convert it back to a string.
      TimeSpan intervalVal; 
      if (TimeSpan.TryParse(intervalStr, out intervalVal)) 
      {
         string intervalToStr = intervalVal.ToString();
  
         // Pad the end of the TimeSpan string with spaces if it 
         // does not contain milliseconds.
         int pIndex = intervalToStr.IndexOf(':');
         pIndex = intervalToStr.IndexOf('.', pIndex);
         if (pIndex < 0)
            intervalToStr += "        ";
   
         Console.WriteLine("{0,21}", intervalToStr);
         // Handle failure of TryParse method.
      }
      else
      {
         Console.WriteLine("Parse operation failed.");
      }
   } 
   
   public static void Main()
   {
        Console.WriteLine( "{0,20}   {1,21}", 
            "String to Parse", "TimeSpan" );    
        Console.WriteLine( "{0,20}   {1,21}", 
            "---------------", "---------------------" );    

        ParseTimeSpan("0");
        ParseTimeSpan("14");
        ParseTimeSpan("1:2:3");
        ParseTimeSpan("0:0:0.250");
        ParseTimeSpan("10.20:30:40.50");
        ParseTimeSpan("99.23:59:59.9999999");
        ParseTimeSpan("0023:0059:0059.0099");
        ParseTimeSpan("23:0:0");
        ParseTimeSpan("24:0:0");
        ParseTimeSpan("0:59:0");
        ParseTimeSpan("0:60:0");
        ParseTimeSpan("0:0:59");
        ParseTimeSpan("0:0:60");
        ParseTimeSpan("10:");
        ParseTimeSpan("10:0");
        ParseTimeSpan(":10");
        ParseTimeSpan("0:10");
        ParseTimeSpan("10:20:");
        ParseTimeSpan("10:20:0");
        ParseTimeSpan(".123");
        ParseTimeSpan("0.12:00");
        ParseTimeSpan("10.");
        ParseTimeSpan("10.12");
        ParseTimeSpan("10.12:00");
   }
}
//            String to Parse                TimeSpan
//            ---------------   ---------------------
//                          0        00:00:00
//                         14     14.00:00:00
//                      1:2:3        01:02:03
//                  0:0:0.250        00:00:00.2500000
//             10.20:30:40.50     10.20:30:40.5000000
//        99.23:59:59.9999999     99.23:59:59.9999999
//        0023:0059:0059.0099        23:59:59.0099000
//                     23:0:0        23:00:00
//                     24:0:0   Parse operation failed.
//                     0:59:0        00:59:00
//                     0:60:0   Parse operation failed.
//                     0:0:59        00:00:59
//                     0:0:60   Parse operation failed.
//                        10:   Parse operation failed.
//                       10:0        10:00:00
//                        :10   Parse operation failed.
//                       0:10        00:10:00
//                     10:20:   Parse operation failed.
//                    10:20:0        10:20:00
//                       .123   Parse operation failed.
//                    0.12:00        12:00:00
//                        10.   Parse operation failed.
//                      10.12   Parse operation failed.
//                   10.12:00     10.12:00:00
Module TryParse
    Sub ParseTimeSpan( intervalStr As String )
        ' Write the first part of the output line.
        Console.Write( "{0,20}   ", intervalStr )

        ' Parse the parameter, and then convert it back to a string.
         Dim intervalVal As TimeSpan 
         If TimeSpan.TryParse( intervalStr, intervalVal ) Then
            Dim intervalToStr As String = intervalVal.ToString( )
   
            ' Pad the end of the TimeSpan string with spaces if it 
            ' does not contain milliseconds.
            Dim pIndex As Integer = intervalToStr.IndexOf( ":"c )
            pIndex = intervalToStr.IndexOf( "."c, pIndex )
            If pIndex < 0 Then   intervalToStr &= "        "
   
            Console.WriteLine( "{0,21}", intervalToStr )
         ' Handle failure of TryParse method.
         Else
            Console.WriteLine("Parse operation failed.")
        End If
    End Sub 

    Public Sub Main( )
        Console.WriteLine( "{0,20}   {1,21}", _
            "String to Parse", "TimeSpan" )    
        Console.WriteLine( "{0,20}   {1,21}", _
            "---------------", "---------------------" )    

        ParseTimeSpan("0")
        ParseTimeSpan("14")
        ParseTimeSpan("1:2:3")
        ParseTimeSpan("0:0:0.250")
        ParseTimeSpan("10.20:30:40.50")
        ParseTimeSpan("99.23:59:59.9999999")
        ParseTimeSpan("0023:0059:0059.0099")
        ParseTimeSpan("23:0:0")
        ParseTimeSpan("24:0:0")
        ParseTimespan("0:59:0")
        ParseTimeSpan("0:60:0")
        ParseTimespan("0:0:59")
        ParseTimeSpan("0:0:60")
        ParseTimeSpan("10:")
        ParsetimeSpan("10:0")
        ParseTimeSpan(":10")
        ParseTimeSpan("0:10")
        ParseTimeSpan("10:20:")
        ParseTimeSpan("10:20:0")
        ParseTimeSpan(".123")
        ParseTimeSpan("0.12:00")
        ParseTimeSpan("10.")
        ParseTimeSpan("10.12")
        ParseTimeSpan("10.12:00")
    End Sub 
End Module 
' This example generates the following output:
'            String to Parse                TimeSpan
'            ---------------   ---------------------
'                          0        00:00:00
'                         14     14.00:00:00
'                      1:2:3        01:02:03
'                  0:0:0.250        00:00:00.2500000
'             10.20:30:40.50     10.20:30:40.5000000
'        99.23:59:59.9999999     99.23:59:59.9999999
'        0023:0059:0059.0099        23:59:59.0099000
'                     23:0:0        23:00:00
'                     24:0:0   Parse operation failed.
'                     0:59:0        00:59:00
'                     0:60:0   Parse operation failed.
'                     0:0:59        00:00:59
'                     0:0:60   Parse operation failed.
'                        10:   Parse operation failed.
'                       10:0        10:00:00
'                        :10   Parse operation failed.
'                       0:10        00:10:00
'                     10:20:   Parse operation failed.
'                    10:20:0        10:20:00
'                       .123   Parse operation failed.
'                    0.12:00        12:00:00
'                        10.   Parse operation failed.
'                      10.12   Parse operation failed.
'                   10.12:00     10.12:00:00

注釈

メソッドはメソッドに似てい TryParse ますが、 TimeSpan.Parse(String) 変換に失敗した場合に例外をスローしない点が異なります。

パラメーターには、 s 次の形式で時間間隔の指定が含まれています。

[ws][-]{ d | d**hh:mm[:ss[.ff]] | hh:mm[:ss[です。ff]]} [ws]

角かっこ ([ および ]) 内の要素は省略可能です。 中かっこ ({と}) で囲まれ、縦棒 (|) で区切られた代替の一覧から1つの選択を行う必要があります。 次の表は、それぞれの要素の説明です。

要素 説明
ws 省略可能な空白。
- 負の値を示す省略可能なマイナス記号 TimeSpan
d 0から10675199までの日数。
. 日を時間から分離する、カルチャに依存するシンボル。 インバリアント形式では、ピリオド (".") 文字が使用されます。
hh 0から23までの時間。
: カルチャに依存する時間区切り記号。 インバリアント形式では、コロン (":") 文字が使用されます。
mm 0から59までの分数。
ss 0から59までの任意の秒数。
. 秒の小数部から秒を区切る、カルチャに依存するシンボル。 インバリアント形式では、ピリオド (".") 文字が使用されます。
ff 省略可能な秒の小数部で構成される10進数字です。

の各コンポーネントは、以下の s 時間間隔を総称して指定する必要があり TimeSpan.MinValue TimeSpan.MaxValue ます。

メソッドは、 Parse(String) 現在の s カルチャに対してカルチャ固有の各書式を使用して解析を試みます。

呼び出し元へのメモ

場合によっては、解析する文字列内の時間間隔コンポーネントに7桁以上の数字が含まれていると、.NET Framework 3.5 以前のバージョンで成功した解析操作が失敗し、.NET Framework 4 以降のバージョンでがスローされることがあり OverflowException ます。 このシナリオを次の例で説明します。

string value = "000000006";
TimeSpan interval;
if (TimeSpan.TryParse(value, out interval))
   Console.WriteLine("{0} --> {1}", value, interval);
else
   Console.WriteLine("Unable to parse '{0}'", value);
   
// Output from .NET Framework 3.5 and earlier versions:
//       000000006 --> 6.00:00:00
// Output from .NET Framework 4:
//       Unable to parse //000000006//
Dim value As String = "000000006"
Dim interval As TimeSpan
If TimeSpan.TryParse(value, interval) Then
   Console.WriteLine("{0} --> {1}", value, interval)
Else
   Console.WriteLine("Unable to parse '{0}'", value)
End If
' Output from .NET Framework 3.5 and earlier versions:
'       000000006 --> 6.00:00:00
' Output from .NET Framework 4:
'       Unable to parse '000000006'

適用対象

TryParse(String, IFormatProvider, TimeSpan)

指定したカルチャ固有の書式情報を使用して、時間間隔の文字列形式を等価の TimeSpan に変換し、変換に成功したかどうかを示す値を返します。

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

パラメーター

input
String

変換する時間間隔を指定する文字列。

formatProvider
IFormatProvider

カルチャ固有の書式情報を提供するオブジェクト。

result
TimeSpan

このメソッドが返されるときに、input で指定した時間間隔を表すオブジェクトを格納します。変換に失敗した場合は、Zero を格納します。 このパラメーターは初期化せずに渡されます。

戻り値

Boolean

input が正常に変換された場合は true。それ以外の場合は falseinput パラメーターが null または Empty である場合、書式が無効な場合、表される時間間隔が MinValue より短いか MaxValue より長い場合、または日、時間、分、秒の各構成要素の少なくとも 1 つが有効な範囲にない場合、この操作は false を返します。

次の例では、オブジェクトの配列を定義 CultureInfo し、メソッドの呼び出しで各オブジェクトを使用して、 TryParse(String, IFormatProvider, TimeSpan) 文字列配列内の要素を解析します。 この例は、特定のカルチャの規則が書式設定操作にどのように影響するかを示しています。

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string[] values = { "6", "6:12", "6:12:14", "6:12:14:45", 
                          "6.12:14:45", "6:12:14:45.3448", 
                          "6:12:14:45,3448", "6:34:14:45" };
      CultureInfo[] cultures = { new CultureInfo("en-US"), 
                                 new CultureInfo("ru-RU"),
                                 CultureInfo.InvariantCulture };
      
      string header = String.Format("{0,-17}", "String");
      foreach (CultureInfo culture in cultures)
         header += culture.Equals(CultureInfo.InvariantCulture) ? 
                      String.Format("{0,20}", "Invariant") :
                      String.Format("{0,20}", culture.Name);

      Console.WriteLine(header);
      Console.WriteLine();
      
      foreach (string value in values)
      {
         Console.Write("{0,-17}", value);
         foreach (CultureInfo culture in cultures)
         {
            TimeSpan interval = new TimeSpan();
            if (TimeSpan.TryParse(value, culture, out interval))
               Console.Write("{0,20}", interval.ToString("c"));
            else
               Console.Write("{0,20}", "Unable to Parse");
         }
         Console.WriteLine();                                
      }
   }
}
// The example displays the following output:
//    String                          en-US               ru-RU           Invariant
//    
//    6                          6.00:00:00          6.00:00:00          6.00:00:00
//    6:12                         06:12:00            06:12:00            06:12:00
//    6:12:14                      06:12:14            06:12:14            06:12:14
//    6:12:14:45                 6.12:14:45          6.12:14:45          6.12:14:45
//    6.12:14:45                 6.12:14:45          6.12:14:45          6.12:14:45
//    6:12:14:45.3448    6.12:14:45.3448000     Unable to Parse  6.12:14:45.3448000
//    6:12:14:45,3448       Unable to Parse  6.12:14:45.3448000     Unable to Parse
//    6:34:14:45            Unable to Parse     Unable to Parse     Unable to Parse
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim values() As String = { "6", "6:12", "6:12:14", "6:12:14:45", 
                                 "6.12:14:45", "6:12:14:45.3448", 
                                 "6:12:14:45,3448", "6:34:14:45" }
      Dim cultures() As CultureInfo = { New CultureInfo("en-US"), 
                                        New CultureInfo("ru-RU"),
                                        CultureInfo.InvariantCulture }
      
      Dim header As String = String.Format("{0,-17}", "String")
      For Each culture As CultureInfo In cultures
         header += If(culture.Equals(CultureInfo.InvariantCulture), 
                      String.Format("{0,20}", "Invariant"),
                      String.Format("{0,20}", culture.Name))
      Next
      Console.WriteLine(header)
      Console.WriteLine()
      
      For Each value As String In values
         Console.Write("{0,-17}", value)
         For Each culture As CultureInfo In cultures
            Dim interval As New TimeSpan()
            If TimeSpan.TryParse(value, culture, interval) Then
               Console.Write("{0,20}", interval.ToString("c"))
            Else
               Console.Write("{0,20}", "Unable to Parse")
            End If     
         Next
         Console.WriteLine()                                
      Next
   End Sub
End Module
' The example displays the following output:
'    String                          en-US               ru-RU           Invariant
'    
'    6                          6.00:00:00          6.00:00:00          6.00:00:00
'    6:12                         06:12:00            06:12:00            06:12:00
'    6:12:14                      06:12:14            06:12:14            06:12:14
'    6:12:14:45                 6.12:14:45          6.12:14:45          6.12:14:45
'    6.12:14:45                 6.12:14:45          6.12:14:45          6.12:14:45
'    6:12:14:45.3448    6.12:14:45.3448000     Unable to Parse  6.12:14:45.3448000
'    6:12:14:45,3448       Unable to Parse  6.12:14:45.3448000     Unable to Parse
'    6:34:14:45            Unable to Parse     Unable to Parse     Unable to Parse

注釈

メソッドはメソッドに似てい TryParse(String, IFormatProvider, TimeSpan) ますが、 Parse(String, IFormatProvider) 変換に失敗した場合に例外をスローしない点が異なります。

パラメーターには、 input 次の形式で時間間隔の指定が含まれています。

[ws][-]{ d | d**hh:mm[:ss[.ff]] | hh:mm[:ss[です。ff]]} [ws]

角かっこ ([ および ]) 内の要素は省略可能です。 中かっこ ({と}) で囲まれ、縦棒 (|) で区切られた代替の一覧から1つの選択を行う必要があります。 次の表は、それぞれの要素の説明です。

要素 説明
ws 省略可能な空白。
- 負の値を示す省略可能なマイナス記号 TimeSpan
d 0から10675199までの日数。
. 日を時間から分離する、カルチャに依存するシンボル。 インバリアント形式では、ピリオド (".") 文字が使用されます。
hh 0から23までの時間。
: カルチャに依存する時間区切り記号。 インバリアント形式では、コロン (":") 文字が使用されます。
mm 0から59までの分数。
ss 0から59までの任意の秒数。
. 秒の小数部から秒を区切る、カルチャに依存するシンボル。 インバリアント形式では、ピリオド (".") 文字が使用されます。
ff 省略可能な秒の小数部で構成される10進数字です。

の各コンポーネントは、以下の input 時間間隔を総称して指定する必要があり TimeSpan.MinValue TimeSpan.MaxValue ます。

メソッドは、 TryParse(String, IFormatProvider, TimeSpan) input によって指定されたカルチャに対してカルチャ固有の各書式を使用して解析を試み formatProvider ます。

パラメーターは、 formatProvider IFormatProvider 返される文字列の書式に関するカルチャ固有の情報を提供する実装です。 formatProviderパラメーターには、次のいずれかを指定できます。

がの場合は formatProvider nullDateTimeFormatInfo 現在のカルチャに関連付けられているオブジェクトが使用されます。

呼び出し元へのメモ

場合によっては、解析する文字列の時間間隔コンポーネントに7桁以上の数字が含まれていると、.NET Framework 3.5 以前のバージョンで成功して返される解析操作 true は失敗し、 false the.NET Framework 4 以降のバージョンで返される可能性があります。 このシナリオの例を次に示します。

string value = "000000006";
TimeSpan interval;
if (TimeSpan.TryParse(value, out interval))
   Console.WriteLine("{0} --> {1}", value, interval);
else
   Console.WriteLine("Unable to parse '{0}'", value);
   
// Output from .NET Framework 3.5 and earlier versions:
//       000000006 --> 6.00:00:00
// Output from .NET Framework 4:
//       Unable to parse //000000006//
Dim value As String = "000000006"
Dim interval As TimeSpan
If TimeSpan.TryParse(value, interval) Then
   Console.WriteLine("{0} --> {1}", value, interval)
Else
   Console.WriteLine("Unable to parse '{0}'", value)
End If
' Output from .NET Framework 3.5 and earlier versions:
'       000000006 --> 6.00:00:00
' Output from .NET Framework 4:
'       Unable to parse '000000006'

適用対象