TimeSpan.Parse メソッド

定義

時間間隔の文字列形式を等価の TimeSpan に変換します。

オーバーロード

Parse(String)

時間間隔の文字列形式を等価の TimeSpan に変換します。

Parse(ReadOnlySpan<Char>, IFormatProvider)

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

Parse(String, IFormatProvider)

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

Parse(String)

時間間隔の文字列形式を等価の TimeSpan に変換します。

public:
 static TimeSpan Parse(System::String ^ s);
public static TimeSpan Parse (string s);
static member Parse : string -> TimeSpan
Public Shared Function Parse (s As String) As TimeSpan

パラメーター

s
String

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

戻り値

TimeSpan

s に対応する時間間隔。

例外

snullです。

s の形式は無効です。

sMinValue 未満の数値か、MaxValue より大きい数値を表します。

  • または - 日、時間、分、または秒のコンポーネントのうち少なくとも 1 つが、その有効範囲外です。

次の例では、メソッドを使用して、 Parse 文字列配列の各要素を値に変換し TimeSpan ます。 現在のシステムカルチャが、現在のシステムカルチャが解析操作に与える影響を示すために、現在のシステムカルチャをクロアチア語-クロアチア ("hr-HR") と英語米国 ("en-us") に変更します。

using System;
using System.Globalization;
using System.Threading;

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" };
      string[] cultureNames = { "hr-HR", "en-US"};
      
      // Change the current culture.
      foreach (string cultureName in cultureNames)
      {
         Thread.CurrentThread.CurrentCulture = new CultureInfo(cultureName);
         Console.WriteLine("Current Culture: {0}", 
                           Thread.CurrentThread.CurrentCulture.Name);
         foreach (string value in values)
         {
            try {
               TimeSpan ts = TimeSpan.Parse(value);
               Console.WriteLine("{0} --> {1}", value, ts.ToString("c"));
            }
            catch (FormatException) {
               Console.WriteLine("{0}: Bad Format", value);
            }   
            catch (OverflowException) {
               Console.WriteLine("{0}: Overflow", value);
            }
         } 
         Console.WriteLine();                                
      }
   }
}
// The example displays the following output:
//    Current Culture: hr-HR
//    6 --> 6.00:00:00
//    6:12 --> 06:12:00
//    6: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.3448: Bad Format
//    6:12:14:45,3448 --> 6.12:14:45.3448000
//    6:34:14:45: Overflow
//    
//    Current Culture: en-US
//    6 --> 6.00:00:00
//    6:12 --> 06:12:00
//    6: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.3448 --> 6.12:14:45.3448000
//    6:12:14:45,3448: Bad Format
//    6:34:14:45: Overflow
Imports System.Globalization
Imports System.Threading

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 cultureNames() As String = { "hr-HR", "en-US"}
      
      ' Change the current culture.
      For Each cultureName As String In cultureNames
         Thread.CurrentThread.CurrentCulture = New CultureInfo(cultureName)
         Console.WriteLine("Current Culture: {0}", 
                           Thread.CurrentThread.CurrentCulture.Name)
         For Each value As String In values
            Try
               Dim ts As TimeSpan = TimeSpan.Parse(value)
               Console.WriteLine("{0} --> {1}", value, ts.ToString("c"))
            Catch e As FormatException
               Console.WriteLine("{0}: Bad Format", value)
            Catch e As OverflowException
               Console.WriteLine("{0}: Overflow", value)
            End Try      
         Next 
         Console.WriteLine()                                
      Next
   End Sub
End Module
' The example displays the following output:
'       Current Culture: hr-HR
'       6 --> 6.00:00:00
'       6:12 --> 06:12:00
'       6: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.3448: Bad Format
'       6:12:14:45,3448 --> 6.12:14:45.3448000
'       6:34:14:45: Overflow
'       
'       Current Culture: en-US
'       6 --> 6.00:00:00
'       6:12 --> 06:12:00
'       6: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.3448 --> 6.12:14:45.3448000
'       6:12:14:45,3448: Bad Format
'       6:34:14:45: Overflow

注釈

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

[ws][-]{ d | [d.]hh:mm[:ss[.ff]] }[ws]

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

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

s引数が日の値でない場合は、時間と分の部分を含める必要があります。他のコンポーネントは省略可能です。 これらが存在する場合は、各時間コンポーネントの値が指定された範囲内に収まる必要があります。 たとえば、 hh, hours 要素の値は 0 ~ 23 の範囲で指定する必要があります。 このため、メソッドに "23:00:00" を渡すと、 Parse 23 時間の時間間隔が返されます。 一方、"24:00:00" を渡すと、24日の時間間隔が返されます。 "24" は hours コンポーネントの範囲外であるため、days コンポーネントとして解釈されます。

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

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

呼び出し元へのメモ

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

string[] values = { "000000006", "12.12:12:12.12345678" };
foreach (string value in values)
{
   try {
      TimeSpan interval = TimeSpan.Parse(value);
      Console.WriteLine("{0} --> {1}", value, interval);
   }   
   catch (FormatException) {
      Console.WriteLine("{0}: Bad Format", value);
   }   
   catch (OverflowException) {
      Console.WriteLine("{0}: Overflow", value);
   }
}

// Output from .NET Framework 3.5 and earlier versions:
//       000000006 --> 6.00:00:00
//       12.12:12:12.12345678: Bad Format      
// Output from .NET Framework 4 and later versions or .NET Core:
//       000000006: Overflow
//       12.12:12:12.12345678: Overflow
Dim values() As String = { "000000006", "12.12:12:12.12345678" }
For Each value As String In values
   Try
      Dim interval As TimeSpan = TimeSpan.Parse(value)
      Console.WriteLine("{0} --> {1}", value, interval)
   Catch e As FormatException
      Console.WriteLine("{0}: Bad Format", value)
   Catch e As OverflowException
      Console.WriteLine("{0}: Overflow", value)
   End Try         
Next
' Output from .NET Framework 3.5 and earlier versions:
'       000000006 --> 6.00:00:00
'       12.12:12:12.12345678: Bad Format      
' Output from .NET Framework 4:
'       000000006: Overflow
'       12.12:12:12.12345678: Overflow

適用対象

Parse(ReadOnlySpan<Char>, IFormatProvider)

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

public static TimeSpan Parse (ReadOnlySpan<char> input, IFormatProvider? formatProvider = default);
public static TimeSpan Parse (ReadOnlySpan<char> input, IFormatProvider formatProvider = default);
static member Parse : ReadOnlySpan<char> * IFormatProvider -> TimeSpan
Public Shared Function Parse (input As ReadOnlySpan(Of Char), Optional formatProvider As IFormatProvider = Nothing) As TimeSpan

パラメーター

input
ReadOnlySpan<Char>

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

formatProvider
IFormatProvider

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

戻り値

TimeSpan

formatProvider の指定に従って変換された、input に対応する時間間隔。

適用対象

Parse(String, IFormatProvider)

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

public:
 static TimeSpan Parse(System::String ^ input, IFormatProvider ^ formatProvider);
public static TimeSpan Parse (string input, IFormatProvider formatProvider);
public static TimeSpan Parse (string input, IFormatProvider? formatProvider);
static member Parse : string * IFormatProvider -> TimeSpan
Public Shared Function Parse (input As String, formatProvider As IFormatProvider) As TimeSpan

パラメーター

input
String

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

formatProvider
IFormatProvider

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

戻り値

TimeSpan

formatProvider の指定に従って変換された、input に対応する時間間隔。

例外

inputnullです。

input の形式は無効です。

inputMinValue 未満の数値か、MaxValue より大きい数値を表します。

  • または - input の日、時間、分、または秒のコンポーネントのうち少なくとも 1 つが、その有効範囲外です。

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

using System;
using System.Globalization;
using System.Text.RegularExpressions;

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)
         {
            try {
               TimeSpan ts = TimeSpan.Parse(value, culture);
               Console.Write("{0,20}", ts.ToString("c"));
            }
            catch (FormatException) {
               Console.Write("{0,20}", "Bad Format");
            }   
            catch (OverflowException) {
               Console.Write("{0,20}", "Overflow");
            }      
         }
         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          Bad Format  6.12:14:45.3448000
//    6:12:14:45,3448            Bad Format  6.12:14:45.3448000          Bad Format
//    6:34:14:45                   Overflow            Overflow            Overflow
Imports System.Globalization
Imports System.Threading

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
            Try
               Dim ts As TimeSpan = TimeSpan.Parse(value, culture)
               Console.Write("{0,20}", ts.ToString("c"))
            Catch e As FormatException
               Console.Write("{0,20}", "Bad Format")
            Catch e As OverflowException
               Console.Write("{0,20}", "Overflow")
            End Try      
         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          Bad Format  6.12:14:45.3448000
'    6:12:14:45,3448            Bad Format  6.12:14:45.3448000          Bad Format
'    6:34:14:45                   Overflow            Overflow            Overflow

注釈

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

[ws][-]{ d | [d.]hh:mm[:ss[.ff]]} [ws]

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

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

input引数が日の値でない場合は、時間と分の部分を含める必要があります。他のコンポーネントは省略可能です。 これらが存在する場合は、各時間コンポーネントの値が指定された範囲内に収まる必要があります。 たとえば、 hh, hours 要素の値は 0 ~ 23 の範囲で指定する必要があります。 このため、メソッドに "23:00:00" を渡すと、 Parse 23 時間の時間間隔が返されます。 一方、"24:00:00" を渡すと、24日の時間間隔が返されます。 "24" は hours コンポーネントの範囲外であるため、days コンポーネントとして解釈されます。

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

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

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

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

呼び出し元へのメモ

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

string[] values = { "000000006", "12.12:12:12.12345678" };
foreach (string value in values)
{
   try {
      TimeSpan interval = TimeSpan.Parse(value);
      Console.WriteLine("{0} --> {1}", value, interval);
   }   
   catch (FormatException) {
      Console.WriteLine("{0}: Bad Format", value);
   }   
   catch (OverflowException) {
      Console.WriteLine("{0}: Overflow", value);
   }
}

// Output from .NET Framework 3.5 and earlier versions:
//       000000006 --> 6.00:00:00
//       12.12:12:12.12345678: Bad Format      
// Output from .NET Framework 4 and later versions or .NET Core:
//       000000006: Overflow
//       12.12:12:12.12345678: Overflow
Dim values() As String = { "000000006", "12.12:12:12.12345678" }
For Each value As String In values
   Try
      Dim interval As TimeSpan = TimeSpan.Parse(value)
      Console.WriteLine("{0} --> {1}", value, interval)
   Catch e As FormatException
      Console.WriteLine("{0}: Bad Format", value)
   Catch e As OverflowException
      Console.WriteLine("{0}: Overflow", value)
   End Try         
Next
' Output from .NET Framework 3.5 and earlier versions:
'       000000006 --> 6.00:00:00
'       12.12:12:12.12345678: Bad Format      
' Output from .NET Framework 4:
'       000000006: Overflow
'       12.12:12:12.12345678: Overflow

適用対象