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 экземпляр объекта, представляющего разницу между двумя датами. Затем он отображает 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 также можно использовать для представления времени суток, но только в том случае, если время не связано с определенной датой. В противном случае следует использовать или DateTimeOffset структуруDateTime. (Дополнительные сведения об использовании TimeSpan структуры для отражения времени суток см. в разделе "Выбор между датами и временем", "DateTimeOffset", "TimeSpan" и TimeZoneInfo.)

Примечание

Значение TimeSpan представляет интервал времени и может быть выражено как определенное количество дней, часов, минут, секунд и миллисекунд. Поскольку он представляет общий интервал без ссылки на определенную начальную или конечную точку, он не может быть выражен с точки зрения лет и месяцев, оба из которых имеют переменное число дней. Он отличается от DateTime значения, представляющего дату и время без ссылки на определенный часовой пояс или DateTimeOffset значение, представляющее определенный момент времени.

Самая большая единица времени, которую TimeSpan структура использует для измерения длительности, составляет день. Интервалы времени измеряются в днях для согласованности, так как количество дней в больших единицах времени, таких как месяцы и годы, меняется.

Значение TimeSpan объекта — это количество тактов, равных представленному интервалу времени. Деление равно 100 наносекунд или 100 миллионов секунд. Значение 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 значение. Например, можно создать 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значения возвращаются арифметическими операторами и методами DateTimeDateTimeOffset, а также TimeSpan структурами.

  • Анализируя строковое представление TimeSpan значения. Для преобразования строк, содержащих интервалы времени, в значения можно использовать Parse методы и TryParse методы 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'
    

    Кроме того, можно определить точный формат входной строки для синтаксического анализа и преобразования в TimeSpan значение путем вызова ParseExact метода или TryParseExact метода.

Выполнение операций со значениями TimeSpan

Вы можете добавить и вычесть продолжительность времени с помощью Addition операторов и Subtraction операторов или путем вызова Add методов и Subtract методов. Вы также можете сравнить две длительности времени, вызвав Compareметоды и Equals и CompareToиные методы. Структура TimeSpan также включает Duration методы и Negate методы, которые преобразуют интервалы времени в положительные и отрицательные значения.

Диапазон значений TimeSpan : MinValue MaxValue.

Форматирование значения TimeSpan

Значение TimeSpan может быть представлено как [-]d.чч:мм:сс. ff, где необязательный знак минус указывает отрицательный интервал времени, компонент d — дни, чч — часы, измеряемые по 24-часовым часам, мм — минуты, сс — секунды, а ff — доля секунды. То есть интервал времени состоит из положительного или отрицательного числа дней без времени суток или числа дней с временем суток или только в течение дня.

Начиная с платформа .NET Framework 4 структура поддерживает форматирование с TimeSpan учетом языка и региональных параметров с помощью перегрузок методаToString, который преобразует TimeSpan значение в строковое представление. Метод по умолчанию TimeSpan.ToString() возвращает интервал времени с помощью инвариантного формата, идентичного его возвращаемого значения в предыдущих версиях платформа .NET Framework. Перегрузка TimeSpan.ToString(String) позволяет указать строку формата, определяющую строковое представление интервала времени. Перегрузка TimeSpan.ToString(String, IFormatProvider) позволяет указать строку формата и язык и региональные параметры, соглашения о форматировании которых используются для создания строкового представления интервала времени. TimeSpan поддерживает строки стандартного и настраиваемого формата. (Дополнительные сведения см. в разделе Стандартные строки формата TimeSpan и настраиваемые строки формата TimeSpan.) Однако только строки стандартного формата чувствительны к языку и региональным параметрам.

Восстановление устаревшего форматирования TimeSpan

В некоторых случаях код, который успешно форматирует TimeSpan значения в платформа .NET Framework 3.5 и более ранних версиях, завершается сбоем в платформа .NET Framework 4. Чаще всего это происходит в коде, который вызывает метод элемента<TimeSpan_LegacyFormatMode> для форматирования TimeSpan значения со строкой формата. Следующий пример успешно форматирует TimeSpan значение в платформа .NET Framework 3.5 и более ранних версиях, но вызывает исключение в платформа .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

Представляет нулевое значение TimeSpan. Это поле доступно только для чтения.

Свойства

Days

Возвращает компонент дней периода времени, представленного текущей структурой TimeSpan.

Hours

Возвращает компонент часов периода времени, представленного текущей структурой TimeSpan.

Microseconds

Возвращает компонент микросекунд интервала времени, представленного текущей TimeSpan структурой.

Milliseconds

Возвращает компонент миллисекунд периода времени, представленного текущей структурой TimeSpan.

Minutes

Возвращает компонент минут периода времени, представленного текущей структурой TimeSpan.

Nanoseconds

Возвращает компонент 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)

Сравнивает два значения TimeSpan и возвращает целое значение, которое показывает, является ли первое значение короче, равно или длиннее второго значения.

CompareTo(Object)

Сравнивает данный экземпляр с указанным объектом и возвращает целое число, которое показывает, как соотносится данный экземпляр с указанным объектом: короче него, равен ему или длиннее указанного объекта.

CompareTo(TimeSpan)

Сравнивает данный экземпляр с указанным объектом TimeSpan и возвращает целое число, которое показывает, как соотносится данный экземпляр с объектом TimeSpan: короче него, равен ему или длиннее указанного объекта.

Divide(Double)

Возвращает новый объект TimeSpan, значение которого является результатом деления данного экземпляра и указанного divisor.

Divide(TimeSpan)

Возвращает новое значение Double, которое является результатом деления данного экземпляра и указанного ts.

Duration()

Возвращает новый объект TimeSpan, значением которого является абсолютное значение текущего объекта TimeSpan.

Equals(Object)

Возвращает значение, показывающее, равен ли данный экземпляр заданному объекту.

Equals(TimeSpan)

Возвращает значение, указывающее, равен ли данный экземпляр заданному объекту TimeSpan.

Equals(TimeSpan, TimeSpan)

Возвращает значение, указывающее, равны ли два заданных экземпляра TimeSpan.

FromDays(Double)

Возвращает объект TimeSpan, представляющий заданное количество дней, округленное до ближайшей миллисекунды.

FromHours(Double)

Возвращает объект TimeSpan, представляющий указанное количество часов, округленное до ближайшей миллисекунды.

FromMicroseconds(Double)

Возвращает значение TimeSpan , представляющее указанное число микросекунд.

FromMilliseconds(Double)

Возвращает объект TimeSpan, представляющий указанное количество миллисекунд.

FromMinutes(Double)

Возвращает объект TimeSpan, представляющий указанное количество минут, округленное до ближайшей миллисекунды.

FromSeconds(Double)

Возвращает объект TimeSpan, представляющий указанное количество секунд, округленное до ближайшей миллисекунды.

FromTicks(Int64)

Возвращает объект TimeSpan, представляющий заданное время в тактах.

GetHashCode()

Возвращает хэш-код для данного экземпляра.

Multiply(Double)

Возвращает новый объект TimeSpan, значение которого является результатом умножения данного экземпляра и указанного factor.

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)

Пытается форматировать значение текущего экземпляра числа временного диапазона в указанный диапазон символов.

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)

Складывает два указанных экземпляра TimeSpan.

Division(TimeSpan, Double)

Возвращает новый объект TimeSpan, значение которого является результатом деления экземпляра timeSpan и указанного divisor.

Division(TimeSpan, TimeSpan)

Возвращает новое значение Double, которое является результатом деления экземпляра t1 и указанного t2.

Equality(TimeSpan, TimeSpan)

Указывает, равны ли два экземпляра TimeSpan.

GreaterThan(TimeSpan, TimeSpan)

Показывает, является ли заданное значение TimeSpan большим, чем другое заданное значение TimeSpan.

GreaterThanOrEqual(TimeSpan, TimeSpan)

Показывает, является ли заданное значение TimeSpan большим или равным другому заданному значению TimeSpan.

Inequality(TimeSpan, TimeSpan)

Показывает, являются ли два экземпляра TimeSpan неравными.

LessThan(TimeSpan, TimeSpan)

Показывает, является ли заданное значение TimeSpan меньшим, чем другое заданное значение TimeSpan.

LessThanOrEqual(TimeSpan, TimeSpan)

Показывает, является ли заданное значение TimeSpan меньшим или равным другому заданному значению TimeSpan.

Multiply(Double, TimeSpan)

Возвращает новый объект TimeSpan, значение которого является результатом умножения указанного factor и указанного экземпляра timeSpan.

Multiply(TimeSpan, Double)

Возвращает новый объект TimeSpan, значение которого является результатом умножения указанного экземпляра timeSpan и указанного factor.

Subtraction(TimeSpan, TimeSpan)

Вычитает указанный объект TimeSpan из другого указанного объекта TimeSpan.

UnaryNegation(TimeSpan)

Возвращает объект TimeSpan со значением, равным значению данного экземпляра с противоположным знаком.

UnaryPlus(TimeSpan)

Возвращает указанный экземпляр TimeSpan.

Явные реализации интерфейса

IComparable.CompareTo(Object)

Сравнивает данный экземпляр с указанным объектом и возвращает целое число, которое показывает, как соотносится данный экземпляр с указанным объектом: короче него, равен ему или длиннее указанного объекта.

Применяется к

См. также раздел