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, IComparable<TimeSpan>, IEquatable<TimeSpan>, IParsable<TimeSpan>, ISpanFormattable, ISpanParsable<TimeSpan>
public value class TimeSpan : IComparable, IComparable<TimeSpan>, IEquatable<TimeSpan>, IParsable<TimeSpan>, ISpanFormattable, ISpanParsable<TimeSpan>, IUtf8SpanFormattable
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, IComparable<TimeSpan>, IEquatable<TimeSpan>, IParsable<TimeSpan>, ISpanFormattable, ISpanParsable<TimeSpan>
public readonly struct TimeSpan : IComparable, IComparable<TimeSpan>, IEquatable<TimeSpan>, IParsable<TimeSpan>, ISpanFormattable, ISpanParsable<TimeSpan>, IUtf8SpanFormattable
[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>
type TimeSpan = struct
    interface IFormattable
    interface IParsable<TimeSpan>
    interface ISpanFormattable
    interface ISpanParsable<TimeSpan>
    interface IUtf8SpanFormattable
[<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 IComparable, IComparable(Of TimeSpan), IEquatable(Of TimeSpan), IParsable(Of TimeSpan), ISpanFormattable, ISpanParsable(Of TimeSpan)
Public Structure TimeSpan
Implements IComparable, IComparable(Of TimeSpan), IEquatable(Of TimeSpan), IParsable(Of TimeSpan), ISpanFormattable, ISpanParsable(Of TimeSpan), IUtf8SpanFormattable
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 、 または DateTimeOffset 構造体を代わりに使用する必要があります。 (構造体を TimeSpan 使用して時刻を反映する方法の詳細については、「 DateTime、DateTimeOffset、TimeSpan、TimeZoneInfo の選択」を参照してください)。

注意

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

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

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

TimeSpan 値のインスタンス化

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

  • 暗黙的なパラメーターなしのコンストラクターを呼び出すこと。 これにより、次の例に示すように、 TimeSpan.Zeroの値を持つ オブジェクトが作成されます。

    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値は、、、および 構造体のDateTimeDateTimeOffsetTimeSpan算術演算子とメソッドによって返されます。

  • 値の文字列表現 TimeSpan を解析します。 メソッドと 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 値に対する操作の実行

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

値のTimeSpan範囲は ですMinValueMaxValue

TimeSpan 値の書式設定

値は TimeSpan [-]d として表すことができます。hh:mm:ssff。省略可能なマイナス記号は負の時間間隔を示し、 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 の構造体で表される時間間隔の nanoseconds コンポーネントを取得します。

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)

このインスタンスを指定した で除算した結果の値を持つ新しい TimeSpan オブジェクトを返します divisor

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)

指定した 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<Byte>, Int32, ReadOnlySpan<Char>, IFormatProvider)

現在のインスタンスの値を UTF-8 として指定されたバイトスパンに書式設定しようとします。

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した で除算した結果の値を持つ新しいTimeSpanオブジェクトを返しますdivisor

Division(TimeSpan, TimeSpan)

で除算した結果の新しいDouble値をt1t2返します。

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)

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

適用対象

こちらもご覧ください