TimeSpan 構造体

定義

時間間隔を表します。

public value class TimeSpan : IComparable, IComparable<TimeSpan>, IEquatable<TimeSpan>, IFormattable
public value class TimeSpan : IComparable, IComparable<TimeSpan>, IEquatable<TimeSpan>, ISpanFormattable
public value class TimeSpan : IComparable<TimeSpan>, IEquatable<TimeSpan>, IParsable<TimeSpan>, ISpanFormattable, ISpanParsable<TimeSpan>, System::Numerics::IAdditionOperators<TimeSpan, TimeSpan, TimeSpan>, System::Numerics::IAdditiveIdentity<TimeSpan, TimeSpan>, System::Numerics::IComparisonOperators<TimeSpan, TimeSpan>, System::Numerics::IDivisionOperators<TimeSpan, double, TimeSpan>, System::Numerics::IDivisionOperators<TimeSpan, TimeSpan, double>, System::Numerics::IEqualityOperators<TimeSpan, TimeSpan>, System::Numerics::IMinMaxValue<TimeSpan>, System::Numerics::IMultiplicativeIdentity<TimeSpan, double>, System::Numerics::IMultiplyOperators<TimeSpan, double, TimeSpan>, System::Numerics::ISubtractionOperators<TimeSpan, TimeSpan, TimeSpan>, System::Numerics::IUnaryNegationOperators<TimeSpan, TimeSpan>, System::Numerics::IUnaryPlusOperators<TimeSpan, TimeSpan>
public value class TimeSpan : IComparable
public value class TimeSpan : IComparable, IComparable<TimeSpan>, IEquatable<TimeSpan>
public struct TimeSpan : IComparable, IComparable<TimeSpan>, IEquatable<TimeSpan>, IFormattable
public readonly struct TimeSpan : IComparable, IComparable<TimeSpan>, IEquatable<TimeSpan>, IFormattable
public readonly struct TimeSpan : IComparable, IComparable<TimeSpan>, IEquatable<TimeSpan>, ISpanFormattable
public readonly struct TimeSpan : IComparable<TimeSpan>, IEquatable<TimeSpan>, IParsable<TimeSpan>, ISpanFormattable, ISpanParsable<TimeSpan>, System.Numerics.IAdditionOperators<TimeSpan,TimeSpan,TimeSpan>, System.Numerics.IAdditiveIdentity<TimeSpan,TimeSpan>, System.Numerics.IComparisonOperators<TimeSpan,TimeSpan>, System.Numerics.IDivisionOperators<TimeSpan,double,TimeSpan>, System.Numerics.IDivisionOperators<TimeSpan,TimeSpan,double>, System.Numerics.IEqualityOperators<TimeSpan,TimeSpan>, System.Numerics.IMinMaxValue<TimeSpan>, System.Numerics.IMultiplicativeIdentity<TimeSpan,double>, System.Numerics.IMultiplyOperators<TimeSpan,double,TimeSpan>, System.Numerics.ISubtractionOperators<TimeSpan,TimeSpan,TimeSpan>, System.Numerics.IUnaryNegationOperators<TimeSpan,TimeSpan>, System.Numerics.IUnaryPlusOperators<TimeSpan,TimeSpan>
[System.Serializable]
public struct TimeSpan : IComparable
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public struct TimeSpan : IComparable, IComparable<TimeSpan>, IEquatable<TimeSpan>
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public struct TimeSpan : IComparable, IComparable<TimeSpan>, IEquatable<TimeSpan>, IFormattable
type TimeSpan = struct
    interface IFormattable
type TimeSpan = struct
    interface ISpanFormattable
    interface IFormattable
type TimeSpan = struct
    interface IFormattable
    interface IParsable<TimeSpan>
    interface ISpanFormattable
    interface ISpanParsable<TimeSpan>
    interface IAdditionOperators<TimeSpan, TimeSpan, TimeSpan>
    interface IAdditiveIdentity<TimeSpan, TimeSpan>
    interface IComparisonOperators<TimeSpan, TimeSpan>
    interface IEqualityOperators<TimeSpan, TimeSpan>
    interface IDivisionOperators<TimeSpan, double, TimeSpan>
    interface IDivisionOperators<TimeSpan, TimeSpan, double>
    interface IMinMaxValue<TimeSpan>
    interface IMultiplicativeIdentity<TimeSpan, double>
    interface IMultiplyOperators<TimeSpan, double, TimeSpan>
    interface ISubtractionOperators<TimeSpan, TimeSpan, TimeSpan>
    interface IUnaryNegationOperators<TimeSpan, TimeSpan>
    interface IUnaryPlusOperators<TimeSpan, TimeSpan>
[<System.Serializable>]
type TimeSpan = struct
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type TimeSpan = struct
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type TimeSpan = struct
    interface IFormattable
Public Structure TimeSpan
Implements IComparable, IComparable(Of TimeSpan), IEquatable(Of TimeSpan), IFormattable
Public Structure TimeSpan
Implements IComparable, IComparable(Of TimeSpan), IEquatable(Of TimeSpan), ISpanFormattable
Public Structure TimeSpan
Implements IAdditionOperators(Of TimeSpan, TimeSpan, TimeSpan), IAdditiveIdentity(Of TimeSpan, TimeSpan), IComparable(Of TimeSpan), IComparisonOperators(Of TimeSpan, TimeSpan), IDivisionOperators(Of TimeSpan, Double, TimeSpan), IDivisionOperators(Of TimeSpan, TimeSpan, Double), IEqualityOperators(Of TimeSpan, TimeSpan), IEquatable(Of TimeSpan), IMinMaxValue(Of TimeSpan), IMultiplicativeIdentity(Of TimeSpan, Double), IMultiplyOperators(Of TimeSpan, Double, TimeSpan), IParsable(Of TimeSpan), ISpanFormattable, ISpanParsable(Of TimeSpan), ISubtractionOperators(Of TimeSpan, TimeSpan, TimeSpan), IUnaryNegationOperators(Of TimeSpan, TimeSpan), IUnaryPlusOperators(Of TimeSpan, TimeSpan)
Public Structure TimeSpan
Implements IComparable
Public Structure TimeSpan
Implements IComparable, IComparable(Of TimeSpan), IEquatable(Of TimeSpan)
継承
TimeSpan
属性
実装

次の例では、 TimeSpan 2 つの日付の差を表すオブジェクトをインスタンス化します。 その後、オブジェクトのプロパティが TimeSpan 表示されます。

// Define two dates.
DateTime date1 = new DateTime(2010, 1, 1, 8, 0, 15);
DateTime date2 = new DateTime(2010, 8, 18, 13, 30, 30);

// Calculate the interval between the two dates.
TimeSpan interval = date2 - date1;
Console.WriteLine("{0} - {1} = {2}", date2, date1, interval.ToString());

// Display individual properties of the resulting TimeSpan object.
Console.WriteLine("   {0,-35} {1,20}", "Value of Days Component:", interval.Days);
Console.WriteLine("   {0,-35} {1,20}", "Total Number of Days:", interval.TotalDays);
Console.WriteLine("   {0,-35} {1,20}", "Value of Hours Component:", interval.Hours);
Console.WriteLine("   {0,-35} {1,20}", "Total Number of Hours:", interval.TotalHours);
Console.WriteLine("   {0,-35} {1,20}", "Value of Minutes Component:", interval.Minutes);
Console.WriteLine("   {0,-35} {1,20}", "Total Number of Minutes:", interval.TotalMinutes);
Console.WriteLine("   {0,-35} {1,20:N0}", "Value of Seconds Component:", interval.Seconds);
Console.WriteLine("   {0,-35} {1,20:N0}", "Total Number of Seconds:", interval.TotalSeconds);
Console.WriteLine("   {0,-35} {1,20:N0}", "Value of Milliseconds Component:", interval.Milliseconds);
Console.WriteLine("   {0,-35} {1,20:N0}", "Total Number of Milliseconds:", interval.TotalMilliseconds);
Console.WriteLine("   {0,-35} {1,20:N0}", "Ticks:", interval.Ticks);

// This example displays the following output:
//       8/18/2010 1:30:30 PM - 1/1/2010 8:00:15 AM = 229.05:30:15
//          Value of Days Component:                             229
//          Total Number of Days:                   229.229340277778
//          Value of Hours Component:                              5
//          Total Number of Hours:                  5501.50416666667
//          Value of Minutes Component:                           30
//          Total Number of Minutes:                       330090.25
//          Value of Seconds Component:                           15
//          Total Number of Seconds:                      19,805,415
//          Value of Milliseconds Component:                       0
//          Total Number of Milliseconds:             19,805,415,000
//          Ticks:                               198,054,150,000,000
// Define two dates.
let date1 = DateTime(2010, 1, 1, 8, 0, 15)
let date2 = DateTime(2010, 8, 18, 13, 30, 30)

// Calculate the interval between the two dates.
let interval = date2 - date1
printfn $"{date2} - {date1} = {interval}"

// Display individual properties of the resulting TimeSpan object.
printfn $"""   {"Value of Days Component:",-35} {interval.Days,20}""" 
printfn $"""   {"Total Number of Days:",-35} {interval.TotalDays,20}""" 
printfn $"""   {"Value of Hours Component:",-35} {interval.Hours,20}""" 
printfn $"""   {"Total Number of Hours:",-35} {interval.TotalHours,20}""" 
printfn $"""   {"Value of Minutes Component:",-35} {interval.Minutes,20}""" 
printfn $"""   {"Total Number of Minutes:",-35} {interval.TotalMinutes,20}""" 
printfn $"""   {"Value of Seconds Component:",-35} {interval.Seconds,20:N0}""" 
printfn $"""   {"Total Number of Seconds:",-35} {interval.TotalSeconds,20:N0}""" 
printfn $"""   {"Value of Milliseconds Component:",-35} {interval.Milliseconds,20:N0}""" 
printfn $"""   {"Total Number of Milliseconds:",-35} {interval.TotalMilliseconds,20:N0}""" 
printfn $"""   {"Ticks:",-35} {interval.Ticks,20:N0}""" 

// This example displays the following output:
//       8/18/2010 1:30:30 PM - 1/1/2010 8:00:15 AM = 229.05:30:15
//          Value of Days Component:                             229
//          Total Number of Days:                   229.229340277778
//          Value of Hours Component:                              5
//          Total Number of Hours:                  5501.50416666667
//          Value of Minutes Component:                           30
//          Total Number of Minutes:                       330090.25
//          Value of Seconds Component:                           15
//          Total Number of Seconds:                      19,805,415
//          Value of Milliseconds Component:                       0
//          Total Number of Milliseconds:             19,805,415,000
//          Ticks:                               198,054,150,000,000
' Define two dates.
Dim date1 As Date = #1/1/2010 8:00:15AM#
Dim date2 As Date = #8/18/2010 1:30:30PM#
' Calculate the interval between the two dates.
Dim interval As TimeSpan = date2 - date1
Console.WriteLine("{0} - {1} = {2}", date2, date1, interval.ToString())
' Display individual properties of the resulting TimeSpan object.
Console.WriteLine("   {0,-35} {1,20}", "Value of Days Component:", interval.Days)
Console.WriteLine("   {0,-35} {1,20}", "Total Number of Days:", interval.TotalDays)
Console.WriteLine("   {0,-35} {1,20}", "Value of Hours Component:", interval.Hours)
Console.WriteLine("   {0,-35} {1,20}", "Total Number of Hours:", interval.TotalHours)
Console.WriteLine("   {0,-35} {1,20}", "Value of Minutes Component:", interval.Minutes)
Console.WriteLine("   {0,-35} {1,20}", "Total Number of Minutes:", interval.TotalMinutes)
Console.WriteLine("   {0,-35} {1,20:N0}", "Value of Seconds Component:", interval.Seconds)
Console.WriteLine("   {0,-35} {1,20:N0}", "Total Number of Seconds:", interval.TotalSeconds)
Console.WriteLine("   {0,-35} {1,20:N0}", "Value of Milliseconds Component:", interval.Milliseconds)
Console.WriteLine("   {0,-35} {1,20:N0}", "Total Number of Milliseconds:", interval.TotalMilliseconds)
Console.WriteLine("   {0,-35} {1,20:N0}", "Ticks:", interval.Ticks)
' The example displays the following output:
'       8/18/2010 1:30:30 PM - 1/1/2010 8:00:15 AM = 229.05:30:15
'          Value of Days Component:                             229
'          Total Number of Days:                   229.229340277778
'          Value of Hours Component:                              5
'          Total Number of Hours:                  5501.50416666667
'          Value of Minutes Component:                           30
'          Total Number of Minutes:                       330090.25
'          Value of Seconds Component:                           15
'          Total Number of Seconds:                      19,805,415
'          Value of Milliseconds Component:                       0
'          Total Number of Milliseconds:             19,805,415,000
'          Ticks:                               198,054,150,000,000
# Define two dates.
$Date2 = Get-Date -Date '2010/8/18' -Hour 13 -Minute 30 -Second 30
$Date1 = Get-Date -Date '2010/1/1'  -Hour 8  -Minute 0  -Second 15

# Calculate the interval between the two dates.
$Interval = $Date2 - $Date1
"{0} - {1} = {2}" -f $Date2, $Date1, ($Interval.ToString())

#  Display individual properties of the resulting TimeSpan object.
"   {0,-35} {1,20}"    -f "Value of Days Component:", $Interval.Days
"   {0,-35} {1,20}"    -f "Total Number of Days:", $Interval.TotalDays
"   {0,-35} {1,20}"    -f "Value of Hours Component:", $Interval.Hours
"   {0,-35} {1,20}"    -f "Total Number of Hours:", $Interval.TotalHours
"   {0,-35} {1,20}"    -f "Value of Minutes Component:", $Interval.Minutes
"   {0,-35} {1,20}"    -f "Total Number of Minutes:", $Interval.TotalMinutes
"   {0,-35} {1,20:N0}" -f "Value of Seconds Component:", $Interval.Seconds
"   {0,-35} {1,20:N0}" -f "Total Number of Seconds:", $Interval.TotalSeconds
"   {0,-35} {1,20:N0}" -f "Value of Milliseconds Component:", $Interval.Milliseconds
"   {0,-35} {1,20:N0}" -f "Total Number of Milliseconds:", $Interval.TotalMilliseconds
"   {0,-35} {1,20:N0}" -f "Ticks:", $Interval.Ticks

<# This sample produces the following output:

18/08/2010 13:30:30 - 01/01/2010 08:00:15 = 229.05:30:15
   Value of Days Component:                             229
   Total Number of Days:                   229.229340277778
   Value of Hours Component:                              5
   Total Number of Hours:                  5501.50416666667
   Value of Minutes Component:                           30
   Total Number of Minutes:                       330090.25
   Value of Seconds Component:                           15
   Total Number of Seconds:                      19,805,415
   Value of Milliseconds Component:                       0
   Total Number of Milliseconds:             19,805,415,000
   Ticks:                               198,054,150,000,000
#>

注釈

オブジェクトは TimeSpan 、正または負の日数、時間、分、秒、および秒の分数として測定される時間間隔 (時間または経過時間) を表します。 構造体は TimeSpan 、時刻が特定の日付と無関係な場合にのみ、時刻を表すためにも使用できます。 それ以外の場合は DateTime 、代わりに or DateTimeOffset 構造体を使用する必要があります。 (構造体を TimeSpan 使用して時刻を反映する方法の詳細については、「 DateTime、DateTimeOffset、TimeSpan、TimeZoneInfo の選択」を参照してください)。

注意

値は TimeSpan 時間間隔を表し、特定の日数、時間、分、秒、ミリ秒として表すことができます。 特定の始点または終点を参照しない一般的な間隔を表すので、年と月の観点から表すことはできません。どちらも日数が可変です。 特定のタイム ゾーンを DateTime 参照しない日付と時刻を表す値や、特定の時刻を DateTimeOffset 表す値とは異なります。

期間を測定するために構造体が TimeSpan 使用する最大の時間単位は 1 日です。 時間間隔は、月や年など、より大きな時間単位の日数が異なるため、一貫性のために日数で測定されます。

オブジェクトの TimeSpan 値は、表される時間間隔と等しいティック数です。 ティックは 100 ナノ秒、つまり 1 秒の 1,000 万分の 1 に相当します。 オブジェクトの値の TimeSpan 範囲は次の値 TimeSpan.MinValue になります TimeSpan.MaxValue

TimeSpan 値のインスタンス化

値は、 TimeSpan さまざまな方法でインスタンス化できます。

  • 暗黙的なパラメーターなしのコンストラクターを呼び出すこと。 This creates an object whose value is TimeSpan.Zero, as the following example shows.

    TimeSpan interval = new TimeSpan();
    Console.WriteLine(interval.Equals(TimeSpan.Zero));    // Displays "True".
    
    let interval = TimeSpan()
    printfn $"{interval.Equals TimeSpan.Zero}"    // Displays "True".
    
    Dim interval As New TimeSpan()
    Console.WriteLine(interval.Equals(TimeSpan.Zero))     ' Displays "True".
    
  • 明示的なコンストラクターのいずれかを呼び出す。 次の例では、 TimeSpan 指定した時間、分、秒の数に値を初期化します。

    TimeSpan interval = new TimeSpan(2, 14, 18);
    Console.WriteLine(interval.ToString());              
    
    // Displays "02:14:18".
    
    let interval = TimeSpan(2, 14, 18)
    printfn $"{interval}"              
    
    // Displays "02:14:18".
    
    Dim interval As New TimeSpan(2, 14, 18)
    Console.WriteLine(interval.ToString())                ' Displays "02:14:18".
    
  • メソッドを呼び出すか、値を返す操作を TimeSpan 実行します。 たとえば、次の例に示すように、2 つの日付と時刻の値の間隔を表す値をインスタンス化 TimeSpan できます。

    DateTime departure = new DateTime(2010, 6, 12, 18, 32, 0);
    DateTime arrival = new DateTime(2010, 6, 13, 22, 47, 0);
    TimeSpan travelTime = arrival - departure;  
    Console.WriteLine("{0} - {1} = {2}", arrival, departure, travelTime);      
    
    // The example displays the following output:
    //       6/13/2010 10:47:00 PM - 6/12/2010 6:32:00 PM = 1.04:15:00
    
    let departure = DateTime(2010, 6, 12, 18, 32, 0)
    let arrival = DateTime(2010, 6, 13, 22, 47, 0)
    let travelTime = arrival - departure  
    printfn $"{arrival} - {departure} = {travelTime}"
    
    // The example displays the following output:
    //       6/13/2010 10:47:00 PM - 6/12/2010 6:32:00 PM = 1.04:15:00
    
    Dim departure As DateTime = #06/12/2010 6:32PM#
    Dim arrival As DateTime = #06/13/2010 10:47PM#
    Dim travelTime As TimeSpan = arrival - departure  
    Console.WriteLine("{0} - {1} = {2}", arrival, departure, travelTime)      
    ' The example displays the following output:
    '       6/13/2010 10:47:00 PM - 6/12/2010 6:32:00 PM = 1.04:15:00
    

    次の例に示すように、この方法でオブジェクトをゼロ時間値に初期化 TimeSpan することもできます。

       Random rnd = new Random();
    
       TimeSpan timeSpent = TimeSpan.Zero;
    
       timeSpent += GetTimeBeforeLunch();
       timeSpent += GetTimeAfterLunch();
    
       Console.WriteLine("Total time: {0}", timeSpent);
    
       TimeSpan GetTimeBeforeLunch()
       {
          return new TimeSpan(rnd.Next(3, 6), 0, 0);
       }
       
       TimeSpan GetTimeAfterLunch()
       {
          return new TimeSpan(rnd.Next(3, 6), 0, 0);
       }
    
       // The example displays output like the following:
       //        Total time: 08:00:00
    
    open System
    
    let rnd = Random()
    
    let getTimeBeforeLunch () =
        TimeSpan(rnd.Next(3, 6), 0, 0)
    
    let getTimeAfterLunch() =
        TimeSpan(rnd.Next(3, 6), 0, 0)
    
    do
        let timeSpent = TimeSpan.Zero
    
        let timeSpent = timeSpent + getTimeBeforeLunch ()
        let timeSpent = timeSpent + getTimeAfterLunch ()
    
        printfn $"Total time: {timeSpent}"
    
    
    // The example displays output like the following:
    //        Total time: 08:00:00
    
    Module Example
       Dim rnd As New Random()
       
       Public Sub Main()
          Dim timeSpent As TimeSpan = TimeSpan.Zero
    
          timeSpent += GetTimeBeforeLunch()
          timeSpent += GetTimeAfterLunch()
    
          Console.WriteLine("Total time: {0}", timeSpent)
       End Sub
       
       Private Function GetTimeBeforeLunch() As TimeSpan
          Return New TimeSpan(rnd.Next(3, 6), 0, 0)
       End Function
       
       Private Function GetTimeAfterLunch() As TimeSpan
          Return New TimeSpan(rnd.Next(3, 6), 0, 0)
       End Function
    End Module
    ' The example displays output like the following:
    '       Total time: 08:00:00
    

    TimeSpan値は、算術演算子と 、DateTimeOffset、およびTimeSpan構造体のDateTimeメソッドによって返されます。

  • 値の文字列表現を TimeSpan 解析する。 and TryParse メソッドをParse使用して、時間間隔を含む文字列を値にTimeSpan変換できます。 次の例では、メソッドを Parse 使用して文字列の配列を値に TimeSpan 変換します。

    string[] values = { "12", "31.", "5.8:32:16", "12:12:15.95", ".12"};
    foreach (string value in values)
    {
       try {
          TimeSpan ts = TimeSpan.Parse(value);
          Console.WriteLine("'{0}' --> {1}", value, ts);
       }
       catch (FormatException) {
          Console.WriteLine("Unable to parse '{0}'", value);
       }
       catch (OverflowException) {
          Console.WriteLine("'{0}' is outside the range of a TimeSpan.", value);
       }   
    }
    
    // The example displays the following output:
    //       '12' --> 12.00:00:00
    //       Unable to parse '31.'
    //       '5.8:32:16' --> 5.08:32:16
    //       '12:12:15.95' --> 12:12:15.9500000
    //       Unable to parse '.12'
    
    let values = [| "12"; "31."; "5.8:32:16"; "12:12:15.95"; ".12" |]
    for value in values do
        try
            let ts = TimeSpan.Parse value
            printfn $"'{value}' --> {ts}"
        with 
        | :? FormatException ->
            printfn $"Unable to parse '{value}'"
        | :? OverflowException ->
            printfn $"'{value}' is outside the range of a TimeSpan."
    
    // The example displays the following output:
    //       '12' --> 12.00:00:00
    //       Unable to parse '31.'
    //       '5.8:32:16' --> 5.08:32:16
    //       '12:12:15.95' --> 12:12:15.9500000
    //       Unable to parse '.12'
    
    Dim values() As String = { "12", "31.", "5.8:32:16", "12:12:15.95", ".12"}
    For Each value As String In values
       Try
          Dim ts As TimeSpan = TimeSpan.Parse(value)
          Console.WriteLine("'{0}' --> {1}", value, ts)
       Catch e As FormatException
          Console.WriteLine("Unable to parse '{0}'", value)
       Catch e As OverflowException
          Console.WriteLine("'{0}' is outside the range of a TimeSpan.", value)
       End Try   
    Next
    ' The example displays the following output:
    '       '12' --> 12.00:00:00
    '       Unable to parse '31.'
    '       '5.8:32:16' --> 5.08:32:16
    '       '12:12:15.95' --> 12:12:15.9500000
    '       Unable to parse '.12'
    

    さらに、またはTryParseExactメソッドを呼び出すことによって、解析して値に変換する入力文字列の正確なTimeSpan形式をParseExact定義できます。

TimeSpan 値に対する操作の実行

時間の期間は、and 演算子を使用するか、メソッドをAdditionSubtraction呼び出AddSubtractして加算または減算できます。 メソッドをEquals呼び出して、2 つの期間をCompareCompareTo比較することもできます。 構造体TimeSpanには、時間間隔を正とNegate負のDuration値に変換するメソッドも含まれています。

値の TimeSpan 範囲は MinValue 次のとおりです MaxValue

TimeSpan 値の書式設定

値は TimeSpan [-]d として表すことができます。hh:mm:ssオプション のマイナス記号が負の時間間隔を示す ff、 d 成分が日、 hh が 24 時間時計で測定された時間、 mm が分、 ss が秒、 ff が 1 秒の分数である。 つまり、時間間隔は、時刻のない正または負の日数、または 1 日の時刻を持つ日数、または 1 日の時刻のみで構成されます。

.NET Framework 4 以降では、TimeSpan構造体はメソッドのToStringオーバーロードを通じてカルチャに依存する書式設定をサポートし、値を文字列表現に変換TimeSpanします。 既定TimeSpan.ToString()のメソッドは、以前のバージョンの.NET Frameworkの戻り値と同じインバリアント形式を使用して時間間隔を返します。 オーバーロード TimeSpan.ToString(String) を使用すると、時間間隔の文字列表現を定義する書式指定文字列を指定できます。 オーバーロード TimeSpan.ToString(String, IFormatProvider) を使用すると、書式指定文字列と、時間間隔の文字列表現を作成するために書式設定規則を使用するカルチャを指定できます。 TimeSpan では、標準書式指定文字列とカスタム書式指定文字列の両方がサポートされます。 (詳細については、「 標準の TimeSpan 書式指定文字列 」および 「カスタム TimeSpan 書式指定文字列」を参照してください)。ただし、カルチャに依存するのは標準の書式指定文字列のみです。

従来の TimeSpan 書式設定の復元

場合によっては、.NET Framework 3.5 以前のバージョンの値の書式設定TimeSpanに成功したコードは、.NET Framework 4 で失敗します。 これは、 <TimeSpan_LegacyFormatMode>要素 メソッドを呼び出して書式指定文字列を使用して値を TimeSpan 書式設定するコードで最も一般的です。 次の例では、.NET Framework 3.5 以前のバージョンの値を正常に書式設定TimeSpanしていますが、.NET Framework 4 以降のバージョンでは例外がスローされます。 サポートされていない書式指定子を使用して値の書式設定TimeSpanを試みます。これは、.NET Framework 3.5 以前のバージョンでは無視されます。

ShowFormattingCode();
// Output from .NET Framework 3.5 and earlier versions:
//       12:30:45
// Output from .NET Framework 4:
//       Invalid Format    

Console.WriteLine("---");

ShowParsingCode();
// Output:
//       000000006 --> 6.00:00:00

void ShowFormattingCode()
{
   TimeSpan interval = new TimeSpan(12, 30, 45);
   string output;
   try {
      output = String.Format("{0:r}", interval);
   }
   catch (FormatException) {
      output = "Invalid Format";
   }
   Console.WriteLine(output);
}

void ShowParsingCode()
{
   string value = "000000006";
   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);
   }
}
let showFormattingCode () =
    let interval = TimeSpan(12, 30, 45)
    try
        $"{interval:r}"
    with :? FormatException ->
        "Invalid Format"
    |> printfn "%s"

let showParsingCode () =
    let value = "000000006"
    try
        let interval = TimeSpan.Parse value
        printfn $"{value} --> {interval}"
    with
    | :? FormatException ->
        printfn $"{value}: Bad Format"
    | :? OverflowException ->
        printfn $"{value}: Overflow"

showFormattingCode ()
// Output from .NET Framework 3.5 and earlier versions:
//       12:30:45
// Output from .NET Framework 4:
//       Invalid Format    

printfn "---"

showParsingCode ()
// Output:
//       000000006 --> 6.00:00:00
Dim interval As New TimeSpan(12, 30, 45)
Dim output As String
Try
   output = String.Format("{0:r}", interval)
Catch e As FormatException
   output = "Invalid Format"
End Try
Console.WriteLine(output)
' Output from .NET Framework 3.5 and earlier versions:
'       12:30:45
' Output from .NET Framework 4:
'       Invalid Format

コードを変更できない場合は、次のいずれかの方法で値の従来の TimeSpan 書式を復元できます。

  • <TimeSpan_LegacyFormatMode>要素を含む構成ファイルを作成します。 この要素の enabled 属性を設定すると true 、アプリケーションごとに従来 TimeSpan の書式が復元されます。

  • アプリケーション ドメインの作成時に "NetFx40_TimeSpanLegacyFormatMode" 互換性スイッチを設定します。 これにより、アプリケーション ドメインごとにレガシ TimeSpan 書式設定が有効になります。 次の例では、レガシ TimeSpan 形式を使用するアプリケーション ドメインを作成します。

    using System;
    
    public class Example
    {
       public static void Main()
       {
          AppDomainSetup appSetup = new AppDomainSetup();
          appSetup.SetCompatibilitySwitches( new string[] { "NetFx40_TimeSpanLegacyFormatMode" } );
          AppDomain legacyDomain = AppDomain.CreateDomain("legacyDomain", 
                                                          null, appSetup);
          legacyDomain.ExecuteAssembly("ShowTimeSpan.exe");
       }
    }
    
    open System
    
    let appSetup = AppDomainSetup()
    appSetup.SetCompatibilitySwitches [| "NetFx40_TimeSpanLegacyFormatMode" |]
    let legacyDomain = AppDomain.CreateDomain("legacyDomain", null, appSetup)
    legacyDomain.ExecuteAssembly "ShowTimeSpan.exe" |> ignore
    
    Module Example
       Public Sub Main()
          Dim appSetup As New AppDomainSetup()
          appSetup.SetCompatibilitySwitches( { "NetFx40_TimeSpanLegacyFormatMode" } )
          Dim legacyDomain As AppDomain = AppDomain.CreateDomain("legacyDomain", 
                                                                 Nothing, appSetup)
          legacyDomain.ExecuteAssembly("ShowTimeSpan.exe")
       End Sub
    End Module
    

    次のコードが新しいアプリケーション ドメインで実行されると、従来 TimeSpan の書式設定の動作に戻ります。

    using System;
    
    public class Example
    {
       public static void Main()
       {
          TimeSpan interval = DateTime.Now - DateTime.Now.Date;
          string msg = String.Format("Elapsed Time Today: {0:d} hours.",
                                     interval);
          Console.WriteLine(msg);
       }
    }
    // The example displays the following output:
    //       Elapsed Time Today: 01:40:52.2524662 hours.
    
    open System
    
    let interval = DateTime.Now - DateTime.Now.Date
    printfn $"Elapsed Time Today: {interval:d} hours."
    // The example displays the following output:
    //       Elapsed Time Today: 01:40:52.2524662 hours.
    
    Module Example
       Public Sub Main()
          Dim interval As TimeSpan = Date.Now - Date.Now.Date
          Dim msg As String = String.Format("Elapsed Time Today: {0:d} hours.",
                                             interval)
          Console.WriteLine(msg)
       End Sub
    End Module
    ' The example displays output like the following:
    '       Elapsed Time Today: 01:40:52.2524662 hours.
    

コンストラクター

TimeSpan(Int32, Int32, Int32)

TimeSpan 構造体の新しいインスタンスを、指定した時間数、分数、秒数に初期化します。

TimeSpan(Int32, Int32, Int32, Int32)

TimeSpan 構造体の新しいインスタンスを指定された日数、時間数、分数、秒数に初期化します。

TimeSpan(Int32, Int32, Int32, Int32, Int32)

TimeSpan 構造体の新しいインスタンスを、指定した日数、時間数、分数、秒数、ミリ秒数に初期化します。

TimeSpan(Int32, Int32, Int32, Int32, Int32, Int32)

TimeSpan 構造体の新しいインスタンスを、指定した日数、時間数、分数、秒数、ミリ秒数に初期化します。

TimeSpan(Int64)

TimeSpan 構造体の新しいインスタンスを、指定したタイマー刻み数に初期化します。

フィールド

MaxValue

TimeSpan の最大値を表します。 このフィールドは読み取り専用です。

MinValue

TimeSpan の最小値を表します。 このフィールドは読み取り専用です。

NanosecondsPerTick

ティックあたりのナノ秒数を表します。 このフィールドは定数です。

TicksPerDay

タイマー刻みの数を 1 日で表します。 このフィールドは定数です。

TicksPerHour

タイマー刻みの数を 1 時間で表します。 このフィールドは定数です。

TicksPerMicrosecond

1 マイクロ秒のティック数を表します。 このフィールドは定数です。

TicksPerMillisecond

タイマー刻みの数を 1 ミリ秒で表します。 このフィールドは定数です。

TicksPerMinute

タイマー刻みの数を 1 分で表します。 このフィールドは定数です。

TicksPerSecond

タイマー刻みの数を 1 秒で表します。

Zero

0 の TimeSpan 値を表します。 このフィールドは読み取り専用です。

プロパティ

Days

現在の TimeSpan 構造体によって表される時間間隔の日要素を取得します。

Hours

現在の TimeSpan 構造体が表す時間間隔の時間の部分を取得します。

Microseconds

現在 TimeSpan の構造体で表される時間間隔のマイクロ秒単位のコンポーネントを取得します。

Milliseconds

現在の TimeSpan 構造体が表す時間間隔のミリ秒の部分を取得します。

Minutes

現在の TimeSpan 構造体が表す時間間隔の分の部分を取得します。

Nanoseconds

現在 TimeSpan の構造体で表される時間間隔のナノ秒単位のコンポーネントを取得します。

Seconds

現在の TimeSpan 構造体が表す時間間隔の秒の部分を取得します。

Ticks

現在の TimeSpan 構造体の値を表すタイマー刻みの数を取得します。

TotalDays

整数部と小数部から成る日数で表される、現在の TimeSpan 構造体の値を取得します。

TotalHours

整数部と小数部から成る時間数で表される、現在の TimeSpan 構造体の値を取得します。

TotalMicroseconds

全体と小数部のマイクロ秒で表される現在 TimeSpan の構造体の値を取得します。

TotalMilliseconds

整数部と小数部から成るミリ秒数で表される、現在の TimeSpan 構造体の値を取得します。

TotalMinutes

整数部と小数部から成る分数で表される、現在の TimeSpan 構造体の値を取得します。

TotalNanoseconds

全体と小数部のナノ秒で表される現在 TimeSpan の構造体の値を取得します。

TotalSeconds

整数部と小数部から成る秒数で表される、現在の TimeSpan 構造体の値を取得します。

メソッド

Add(TimeSpan)

指定した TimeSpan オブジェクトとこのインスタンスを合計した値を持つ新しい TimeSpan オブジェクトを返します。

Compare(TimeSpan, TimeSpan)

2 つの TimeSpan 値を比較し、第 1 の値が第 2 の値よりも短いか、同じか、または長いかを示す整数を返します。

CompareTo(Object)

このインスタンスと指定したオブジェクトを比較し、このインスタンスが指定したオブジェクトよりも短いか、同じか、または長いかを示す整数を返します。

CompareTo(TimeSpan)

このインスタンスと指定した TimeSpan オブジェクトを比較し、このインスタンスが指定した TimeSpan オブジェクトよりも短いか、同じか、または長いかを示す整数を返します。

Divide(Double)

このインスタンスと指定した divisor による除算の結果を値とする、新しい TimeSpan オブジェクトが返されます。

Divide(TimeSpan)

このインスタンスと指定した ts による除算の結果を値とする、新しい Double の値が返されます。

Duration()

値が現在の TimeSpan オブジェクトの絶対値である、新しい TimeSpan オブジェクトを返します。

Equals(Object)

このインスタンスが指定されたオブジェクトに等しいかどうかを示す値を返します。

Equals(TimeSpan)

対象のインスタンスが、指定した TimeSpan オブジェクトに等しいかどうかを示す値を返します。

Equals(TimeSpan, TimeSpan)

TimeSpan の指定した 2 つのインスタンスが等しいかどうかを示す値を返します。

FromDays(Double)

指定した日数を表す TimeSpan を返します。日数は、ミリ秒単位の精度で指定します。

FromHours(Double)

指定した時間数を表す TimeSpan を返します。時間数は、ミリ秒単位の精度で指定します。

FromMicroseconds(Double)

指定したマイクロ秒数を表す a TimeSpan を返します。

FromMilliseconds(Double)

指定されたミリ秒数を表す TimeSpan を返します。

FromMinutes(Double)

指定した分数を表す TimeSpan を返します。分数は、ミリ秒単位の精度で指定します。

FromSeconds(Double)

指定した秒数を表す TimeSpan を返します。秒数は、ミリ秒単位の精度で指定します。

FromTicks(Int64)

指定した時間を表す TimeSpan を返します。時間は、タイマー刻み単位で指定します。

GetHashCode()

このインスタンスのハッシュ コードを返します。

Multiply(Double)

このインスタンスと指定した factor による乗算の結果を値とする、新しい TimeSpan オブジェクトが返されます。

Negate()

このインスタンスの値とは符号が逆の値を持つ新しい TimeSpan オブジェクトを返します。

Parse(ReadOnlySpan<Char>, IFormatProvider)

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

Parse(String)

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

Parse(String, IFormatProvider)

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

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

指定した書式とカルチャ固有の書式情報を使用して、時間間隔の文字スパンを等価の TimeSpan に変換します。 文字列形式の書式は、指定した書式と完全に一致する必要があります。

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

指定した書式、カルチャ固有の書式情報、およびスタイルを使用して、時間間隔の文字列形式を等価の TimeSpan に変換します。 文字列形式の書式は、指定されたいずれかの書式と完全に一致する必要があります。

ParseExact(String, String, IFormatProvider)

指定した書式とカルチャ固有の書式情報を使用して、時間間隔の文字列形式を等価の TimeSpan に変換します。 文字列形式の書式は、指定した書式と完全に一致する必要があります。

ParseExact(String, String, IFormatProvider, TimeSpanStyles)

指定した書式、カルチャ固有の書式情報、およびスタイルを使用して、時間間隔の文字列形式を等価の TimeSpan に変換します。 文字列形式の書式は、指定した書式と完全に一致する必要があります。

ParseExact(String, String[], IFormatProvider)

指定した書式指定文字列の配列とカルチャ固有の書式情報を使用して、時間間隔の文字列形式を等価の TimeSpan に変換します。 文字列形式の書式は、指定されたいずれかの書式と完全に一致する必要があります。

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

指定した書式、カルチャ固有の書式情報、およびスタイルを使用して、時間間隔の文字列形式を等価の TimeSpan に変換します。 文字列形式の書式は、指定されたいずれかの書式と完全に一致する必要があります。

Subtract(TimeSpan)

指定した TimeSpan オブジェクトとこのインスタンスとの差を示す値を持つ、新しい TimeSpan オブジェクトを返します。

ToString()

現在の TimeSpan オブジェクトの値を等価の文字列形式に変換します。

ToString(String)

指定した書式を使用して、現在の TimeSpan オブジェクトの値を等価の文字列形式に変換します。

ToString(String, IFormatProvider)

指定した書式とカルチャ固有の書式情報を使用して、現在の TimeSpan オブジェクトの値を等価の文字列形式に変換します。

TryFormat(Span<Char>, Int32, ReadOnlySpan<Char>, IFormatProvider)

現在の timespan 数インスタンスの値の、指定した文字スパンへの書式設定を試みます。

TryParse(ReadOnlySpan<Char>, IFormatProvider, TimeSpan)

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

TryParse(ReadOnlySpan<Char>, TimeSpan)

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

TryParse(String, IFormatProvider, TimeSpan)

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

TryParse(String, TimeSpan)

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

TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, TimeSpan)

指定した書式とカルチャ固有の書式情報を使用して、時間間隔の指定したスパン表現を等価の TimeSpan に変換します。 文字列形式の書式は、指定した書式と完全に一致する必要があります。

TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, TimeSpanStyles, TimeSpan)

指定した書式、カルチャ固有の書式情報、およびスタイルを使用して、指定した時間間隔のスパン表現を等価の TimeSpan に変換し、変換に成功したかどうかを示す値を返します。 文字列形式の書式は、指定した書式と完全に一致する必要があります。

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

指定した書式とカルチャ固有の書式情報を使用して、時間間隔の指定したスパン表現を等価の TimeSpan に変換します。 文字列形式の書式は、指定されたいずれかの書式と完全に一致する必要があります。

TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, TimeSpanStyles, TimeSpan)

指定した書式、カルチャ固有の書式情報、およびスタイルを使用して、時間間隔の指定したスパン表現を等価の TimeSpan に変換します。 文字列形式の書式は、指定されたいずれかの書式と完全に一致する必要があります。

TryParseExact(String, String, IFormatProvider, TimeSpan)

指定した書式とカルチャ固有の書式情報を使用して、時間間隔の文字列形式を等価の TimeSpan に変換します。 文字列形式の書式は、指定した書式と完全に一致する必要があります。

TryParseExact(String, String, IFormatProvider, TimeSpanStyles, TimeSpan)

指定した書式、カルチャ固有の書式情報、およびスタイルを使用して、時間間隔の文字列形式を等価の TimeSpan に変換します。 文字列形式の書式は、指定した書式と完全に一致する必要があります。

TryParseExact(String, String[], IFormatProvider, TimeSpan)

指定した書式とカルチャ固有の書式情報を使用して、時間間隔の指定した文字列形式を等価の TimeSpan に変換します。 文字列形式の書式は、指定されたいずれかの書式と完全に一致する必要があります。

TryParseExact(String, String[], IFormatProvider, TimeSpanStyles, TimeSpan)

指定した書式、カルチャ固有の書式情報、およびスタイルを使用して、時間間隔の指定した文字列形式を等価の TimeSpan に変換します。 文字列形式の書式は、指定されたいずれかの書式と完全に一致する必要があります。

演算子

Addition(TimeSpan, TimeSpan)

指定した 2 つの TimeSpan インスタンスを加算します。

Division(TimeSpan, Double)

timeSpan インスタンスと指定した divisor による除算の結果を値とする、新しい TimeSpan オブジェクトが返されます。

Division(TimeSpan, TimeSpan)

t1 インスタンスと指定した t2 による除算の結果である、新しい Double の値が返されます。

Equality(TimeSpan, TimeSpan)

2 つの TimeSpan インスタンスが等しいかどうかを示します。

GreaterThan(TimeSpan, TimeSpan)

指定した TimeSpan が、指定したもう 1 つの TimeSpan より大きいかどうかを示します。

GreaterThanOrEqual(TimeSpan, TimeSpan)

指定した TimeSpan が、指定したもう 1 つの TimeSpan 以上かどうかを示します。

Inequality(TimeSpan, TimeSpan)

TimeSpan の 2 つのインスタンスが等しくないかどうかを示します。

LessThan(TimeSpan, TimeSpan)

指定した TimeSpan が、指定したもう 1 つの TimeSpan 未満かどうかを示します。

LessThanOrEqual(TimeSpan, TimeSpan)

指定した TimeSpan が、指定したもう 1 つの TimeSpan 以下かどうかを示します。

Multiply(Double, TimeSpan)

指定した factor および指定した timeSpan インスタンスの乗算の結果を値とする、新しい TimeSpan オブジェクトが返されます。

Multiply(TimeSpan, Double)

指定した timeSpan インスタンスと指定した factor の乗算の結果を値とする、新しい TimeSpan オブジェクトが返されます。

Subtraction(TimeSpan, TimeSpan)

指定したもう 1 つの TimeSpan から、指定した TimeSpan を減算します。

UnaryNegation(TimeSpan)

指定したインスタンスの値とは符号が逆の値を持つ TimeSpan を返します。

UnaryPlus(TimeSpan)

TimeSpan の指定したインスタンスを返します。

明示的なインターフェイスの実装

IComparable.CompareTo(Object)

このインスタンスと指定したオブジェクトを比較し、このインスタンスが指定したオブジェクトよりも短いか、同じか、または長いかを示す整数を返します。

適用対象

こちらもご覧ください