TimeSpan Estrutura

Definição

Representa um intervalo de tempo.

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)
Herança
TimeSpan
Atributos
Implementações

Exemplos

O exemplo a seguir cria uma instância de um TimeSpan objeto que representa a diferença entre duas datas. Em seguida, ele exibe as TimeSpan propriedades do objeto.

// 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
#>

Comentários

Um TimeSpan objeto representa um intervalo de tempo (duração do tempo ou tempo decorrido) medido como um número positivo ou negativo de dias, horas, minutos, segundos e frações de segundo. A TimeSpan estrutura também pode ser usada para representar a hora do dia, mas somente se a hora não estiver relacionada a uma data específica. Caso contrário, a DateTime estrutura ou DateTimeOffset deverá ser usada. (Para obter mais informações sobre como usar a TimeSpan estrutura para refletir a hora do dia, consulte Escolhendo entre DateTime, DateTimeOffset, TimeSpan e TimeZoneInfo.)

Observação

Um TimeSpan valor representa um intervalo de tempo e pode ser expresso como um determinado número de dias, horas, minutos, segundos e milissegundos. Como representa um intervalo geral sem referência a um ponto inicial ou final específico, ele não pode ser expresso em termos de anos e meses, ambos com um número variável de dias. Ele é diferente de um DateTime valor , que representa uma data e hora sem referência a um fuso horário específico ou um DateTimeOffset valor, que representa um momento específico de tempo.

A maior unidade de tempo que a TimeSpan estrutura usa para medir a duração é um dia. Os intervalos de tempo são medidos em dias para consistência, pois o número de dias em unidades maiores de tempo, como meses e anos, varia.

O valor de um TimeSpan objeto é o número de tiques que são iguais ao intervalo de tempo representado. Um carrapato é igual a 100 nanossegundos, ou um décimo milionésimo de segundo. O valor de um TimeSpan objeto pode variar de TimeSpan.MinValue a TimeSpan.MaxValue.

Criando uma instância de um valor TimeSpan

Você pode criar uma instância de um TimeSpan valor de várias maneiras:

  • Chamando seu construtor implícito sem parâmetros. Isso cria um objeto cujo valor é TimeSpan.Zero, como mostra o exemplo a seguir.

    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".
    
  • Chamando um de seus construtores explícitos. O exemplo a seguir inicializa um TimeSpan valor para um número especificado de horas, minutos e segundos.

    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".
    
  • Chamando um método ou executando uma operação que retorna um TimeSpan valor. Por exemplo, você pode instanciar um TimeSpan valor que representa o intervalo entre dois valores de data e hora, como mostra o exemplo a seguir.

    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
    

    Você também pode inicializar um TimeSpan objeto para um valor de tempo zero dessa maneira, como mostra o exemplo a seguir.

       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 os valores são retornados por operadores aritméticos e métodos das DateTimeestruturas , DateTimeOffsete TimeSpan .

  • Analisando a representação de cadeia de caracteres de um TimeSpan valor. Você pode usar os Parse métodos e TryParse para converter cadeias de caracteres que contêm intervalos de tempo em TimeSpan valores. O exemplo a seguir usa o Parse método para converter uma matriz de cadeias de caracteres em TimeSpan valores.

    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'
    

    Além disso, você pode definir o formato preciso da cadeia de caracteres de entrada a ser analisada e convertida em um TimeSpan valor chamando o ParseExact método ou TryParseExact .

Realizando operações em valores TimeSpan

Você pode adicionar e subtrair durações de tempo usando os Addition operadores e Subtraction ou chamando os Add métodos e Subtract . Você também pode comparar duas durações de tempo chamando os Comparemétodos , CompareToe Equals . A TimeSpan estrutura também inclui os Duration métodos e Negate , que convertem intervalos de tempo em valores positivos e negativos,

O intervalo de TimeSpan valores é MinValue para MaxValue.

Formatando um valor TimeSpan

Um TimeSpan valor pode ser representado como [-]d.hh:mm:ss. ff, em que o sinal de subtração opcional indica um intervalo de tempo negativo, o componente d é dias, hh é horas conforme medido em um relógio de 24 horas, mm é minutos, ss é segundos e ff é frações de segundo. Ou seja, um intervalo de tempo consiste em um número positivo ou negativo de dias sem uma hora do dia ou um número de dias com uma hora do dia ou apenas uma hora do dia.

A partir do .NET Framework 4, a TimeSpan estrutura dá suporte à formatação sensível à cultura por meio das sobrecargas de seu ToString método, que converte um TimeSpan valor em sua representação de cadeia de caracteres. O método padrão TimeSpan.ToString() retorna um intervalo de tempo usando um formato invariável idêntico ao seu valor retornado em versões anteriores do .NET Framework. A TimeSpan.ToString(String) sobrecarga permite especificar uma cadeia de caracteres de formato que define a representação de cadeia de caracteres do intervalo de tempo. A TimeSpan.ToString(String, IFormatProvider) sobrecarga permite especificar uma cadeia de caracteres de formato e a cultura cujas convenções de formatação são usadas para criar a representação de cadeia de caracteres do intervalo de tempo. TimeSpan dá suporte a cadeias de caracteres de formato padrão e personalizado. (Para obter mais informações, consulte Cadeias de caracteres de formato TimeSpan padrão e Cadeias de caracteres de formato TimeSpan personalizadas.) No entanto, somente cadeias de caracteres de formato padrão diferenciam a cultura.

Restaurando formatação de TimeSpan herdado

Em alguns casos, o código que formata TimeSpan com êxito valores no .NET Framework 3.5 e versões anteriores falha no .NET Framework 4. Isso é mais comum no código que chama um <método de elemento TimeSpan_LegacyFormatMode> para formatar um TimeSpan valor com uma cadeia de caracteres de formato. O exemplo a seguir formata com êxito um TimeSpan valor em .NET Framework 3.5 e versões anteriores, mas gera uma exceção em .NET Framework 4 e versões posteriores. Observe que ele tenta formatar um TimeSpan valor usando um especificador de formato sem suporte, que é ignorado em .NET Framework 3.5 e versões anteriores.

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

Se você não puder modificar o código, poderá restaurar a formatação herdada de valores de TimeSpan uma das seguintes maneiras:

  • Criando um arquivo de configuração que contém o <elemento TimeSpan_LegacyFormatMode>. Definir o atributo desse enabled elemento para restaurar a true formatação herdada TimeSpan por aplicativo.

  • Definindo a opção de compatibilidade "NetFx40_TimeSpanLegacyFormatMode" ao criar um domínio de aplicativo. Isso permite a formatação herdada TimeSpan por domínio do aplicativo. O exemplo a seguir cria um domínio de aplicativo que usa formatação herdada 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
    

    Quando o código a seguir é executado no novo domínio do aplicativo, ele é revertido para o comportamento de formatação herdado 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.
    

Construtores

TimeSpan(Int32, Int32, Int32)

Inicializa uma nova instância da estrutura TimeSpan para um número especificado de horas, minutos e segundos.

TimeSpan(Int32, Int32, Int32, Int32)

Inicializa uma nova instância da estrutura TimeSpan para um número especificado de dias, horas, minutos e segundos.

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

Inicializa uma nova instância da estrutura TimeSpan para um número especificado de dias, horas, minutos, segundos e milissegundos.

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

Inicializa uma nova instância da TimeSpan estrutura para um número especificado de dias, horas, minutos, segundos, milissegundos e microssegundos.

TimeSpan(Int64)

Inicializa uma nova instância da estrutura TimeSpan para o número especificado de tiques.

Campos

MaxValue

Representa o valor máximo de TimeSpan. Este campo é somente leitura.

MinValue

Representa o valor mínimo de TimeSpan. Este campo é somente leitura.

NanosecondsPerTick

Representa o número de nanossegundos por tique. Este campo é constante.

TicksPerDay

Representa o número de tiques em 1 dia. Este campo é constante.

TicksPerHour

Representa o número de tiques em 1 hora. Este campo é constante.

TicksPerMicrosecond

Representa o número de tiques em 1 microssegundo. Este campo é constante.

TicksPerMillisecond

Representa o número de tiques em 1 milissegundo. Este campo é constante.

TicksPerMinute

Representa o número de tiques em 1 minuto. Este campo é constante.

TicksPerSecond

Representa o número de tiques em 1 segundo.

Zero

Representa o valor de TimeSpan zero. Este campo é somente leitura.

Propriedades

Days

Obtém o componente de dias do intervalo de tempo representado pela estrutura TimeSpan atual.

Hours

Obtém o componente de horas do intervalo de tempo representado pela estrutura TimeSpan atual.

Microseconds

Obtém o componente microssegundos do intervalo de tempo representado pela estrutura atual TimeSpan .

Milliseconds

Obtém o componente de milissegundos do intervalo de tempo representado pela estrutura TimeSpan atual.

Minutes

Obtém o componente de minutos do intervalo de tempo representado pela estrutura TimeSpan atual.

Nanoseconds

Obtém o componente nanossegundos do intervalo de tempo representado pela estrutura atual TimeSpan .

Seconds

Obtém o componente de segundos do intervalo de tempo representado pela estrutura TimeSpan atual.

Ticks

Obtém o número de tiques que representam o valor da estrutura TimeSpan atual.

TotalDays

Obtém o valor da estrutura TimeSpan atual expressa em dias inteiros e fracionários.

TotalHours

Obtém o valor da atual estrutura TimeSpan expressa em horas total e parcial.

TotalMicroseconds

Obtém o valor da estrutura atual TimeSpan expressa em microssegundos inteiros e fracionários.

TotalMilliseconds

Obtém o valor da atual estrutura TimeSpan atual expressa em milissegundos totais e parciais.

TotalMinutes

Obtém o valor da atual estrutura TimeSpan expressa em minutos total e parcial.

TotalNanoseconds

Obtém o valor da estrutura atual TimeSpan expressa em nanossegundos inteiros e fracionários.

TotalSeconds

Obtém o valor da atual estrutura TimeSpan expressa em segundos total e parcial.

Métodos

Add(TimeSpan)

Retorna um novo objeto TimeSpan cujo valor é a soma do objeto TimeSpan especificado e dessa instância.

Compare(TimeSpan, TimeSpan)

Compara dois valores TimeSpan e retorna um inteiro que indica se o primeiro valor é menor que, igual a ou maior que o segundo valor.

CompareTo(Object)

Compara esta instância a um objeto especificado e retorna um inteiro que indica se essa instância é mais curta, igual ou mais longa que o objeto especificado.

CompareTo(TimeSpan)

Compara esta instância com um objeto TimeSpan especificado e retorna um inteiro que indica se esta instância é menor que, igual a ou maior que o objeto TimeSpan.

Divide(Double)

Retorna um novo TimeSpan objeto cujo valor é o resultado da divisão dessa instância pelo especificado divisor.

Divide(TimeSpan)

Retorna um novo Double valor que é o resultado da divisão dessa instância por ts.

Duration()

Retorna um novo objeto TimeSpan cujo valor é o valor absoluto do objeto TimeSpan atual.

Equals(Object)

Retorna um valor que indica se a instância é igual a um objeto especificado.

Equals(TimeSpan)

Retorna um valor que indica se essa instância é igual a um objeto TimeSpan especificado.

Equals(TimeSpan, TimeSpan)

Retorna um valor que indica se duas instâncias especificadas de TimeSpan são iguais.

FromDays(Double)

Retorna um TimeSpan que representa um número especificado de dias, em que a especificação tem a precisão do milissegundo mais próximo.

FromHours(Double)

Retorna um TimeSpan que representa um número especificado de horas, em que a especificação tem a precisão do milissegundo mais próximo.

FromMicroseconds(Double)

Retorna um TimeSpan que representa um número especificado de microssegundos.

FromMilliseconds(Double)

Retorna um TimeSpan que representa um número especificado de milissegundos.

FromMinutes(Double)

Retorna um TimeSpan que representa um número especificado de minutos, em que a especificação tem a precisão do milissegundo mais próximo.

FromSeconds(Double)

Retorna um TimeSpan que representa um número especificado de segundos, em que a especificação tem a precisão do milissegundo mais próximo.

FromTicks(Int64)

Retorna um TimeSpan que representa o tempo especificado, no qual a especificação está em unidades de tiques.

GetHashCode()

Retorna um código hash para essa instância.

Multiply(Double)

Retorna um novo objeto TimeSpan, cujo valor é o resultado da multiplicação dessa instância e o factor especificado.

Negate()

Retorna um novo objeto TimeSpan cujo valor é o valor negado dessa instância.

Parse(ReadOnlySpan<Char>, IFormatProvider)

Converte a representação de intervalo de um intervalo de tempo em seu equivalente de TimeSpan usando as informações de formato específicas da cultura definidas.

Parse(String)

Converte a representação da cadeia de caracteres de um intervalo de tempo em seu equivalente TimeSpan.

Parse(String, IFormatProvider)

Converte a representação de cadeia de caracteres de um intervalo de hora em seu equivalente de TimeSpan usando as informações de formato específicas da cultura especificadas.

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

Converte o intervalo de caracteres de um intervalo de tempo em seu equivalente de TimeSpan usando o formato e as informações de formato específicas da cultura definidos. O formato de representação da cadeia de caracteres deve corresponder exatamente ao formato especificado.

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

Converte a representação de cadeia de caracteres de um intervalo de tempo em seu TimeSpan equivalente usando os formatos especificados, as informações de formato específicas de cultura e os estilos. O formato da representação da cadeia de caracteres deve corresponder exatamente a um dos formatos especificados.

ParseExact(String, String, IFormatProvider)

Converte a representação de cadeia de caracteres de um intervalo de hora em seu equivalente de TimeSpan usando o formato e as informações de formato específicas da cultura especificadas. O formato de representação da cadeia de caracteres deve corresponder exatamente ao formato especificado.

ParseExact(String, String, IFormatProvider, TimeSpanStyles)

Converte a representação de cadeia de caracteres de um intervalo em seu equivalente de TimeSpan usando o formato e as informações de formato específicas da cultura e estilo. O formato de representação da cadeia de caracteres deve corresponder exatamente ao formato especificado.

ParseExact(String, String[], IFormatProvider)

Converte a representação de cadeia de caracteres de um intervalo de tempo em seu TimeSpan equivalente usando a matriz de cadeias de caracteres de formato especificada e as informações de formato específicas de cultura. O formato da representação da cadeia de caracteres deve corresponder exatamente a um dos formatos especificados.

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

Converte a representação de cadeia de caracteres de um intervalo de tempo em seu TimeSpan equivalente usando os formatos especificados, as informações de formato específicas de cultura e os estilos. O formato da representação da cadeia de caracteres deve corresponder exatamente a um dos formatos especificados.

Subtract(TimeSpan)

Retorna um novo objeto TimeSpan cujo valor é a diferença entre o objeto TimeSpan especificado e essa instância.

ToString()

Converte o valor do atual objeto TimeSpan na representação de cadeia de caracteres equivalente.

ToString(String)

Converte o valor do objeto TimeSpan atual para sua representação de cadeia de caracteres equivalente usando o formato especificado.

ToString(String, IFormatProvider)

Converte o valor do objeto TimeSpan atual na representação de cadeia de caracteres equivalente usando o formato especificado e as informações de formatação específicas da cultura.

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

Tenta formatar o valor da instância atual como UTF-8 no intervalo fornecido de bytes.

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

Tenta formatar o valor da instância do intervalo de tempo atual para o intervalo de caracteres fornecido.

TryParse(ReadOnlySpan<Char>, IFormatProvider, TimeSpan)

Converte a representação de span de um intervalo de tempo em seu equivalente de TimeSpan usando as informações especificadas de formatação específicas da cultura e retorna um valor que indica se a conversão foi bem-sucedida.

TryParse(ReadOnlySpan<Char>, TimeSpan)

Converte a representação de intervalo de um intervalo de tempo em seu equivalente de TimeSpan e retorna um valor que indica se a conversão foi bem-sucedida.

TryParse(String, IFormatProvider, TimeSpan)

Converte a representação de cadeia de caracteres de um intervalo de tempo em seu TimeSpan equivalente usando as informações especificadas de formatação específicas da cultura e retorna um valor que indica se a conversão foi bem-sucedida.

TryParse(String, TimeSpan)

Converte a representação de cadeia de caracteres de um intervalo de tempo no equivalente de TimeSpan e retorna um valor que indica se a conversão foi bem-sucedida.

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

Converte a representação de intervalo especificada de um intervalo de tempo em seu equivalente de TimeSpan usando o formato e as informações de formato específicas à cultura especificados. O formato de representação da cadeia de caracteres deve corresponder exatamente ao formato especificado.

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

Converte a representação de intervalo especificada de um intervalo de tempo em seu equivalente de TimeSpan usando o formato especificado, as informações de formato específicas da cultura e os estilos e retorna um valor que indica se a conversão foi bem-sucedida. O formato de representação da cadeia de caracteres deve corresponder exatamente ao formato especificado.

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

Converte a representação de intervalo especificada de um intervalo de tempo em seu equivalente de TimeSpan usando os formatos e as informações de formato específicas à cultura especificados. O formato da representação da cadeia de caracteres deve corresponder exatamente a um dos formatos especificados.

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

Converte a representação de intervalo especificada de um intervalo de tempo em seu equivalente de TimeSpan usando os formatos, as informações de formato específicas à cultura e os estilos especificados. O formato da representação da cadeia de caracteres deve corresponder exatamente a um dos formatos especificados.

TryParseExact(String, String, IFormatProvider, TimeSpan)

Converte a representação de cadeia de caracteres de um intervalo de hora em seu equivalente de TimeSpan usando o formato e as informações de formato específicas da cultura especificadas. O formato de representação da cadeia de caracteres deve corresponder exatamente ao formato especificado.

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

Converte a representação de cadeia de caracteres de um intervalo em seu equivalente de TimeSpan usando o formato, as informações de formato específicas à cultura e os estilos especificados. O formato de representação da cadeia de caracteres deve corresponder exatamente ao formato especificado.

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

Converte a representação de cadeia de caracteres especificada de um intervalo de tempo em seu equivalente de TimeSpan usando os formatos e as informações de formato específicas à cultura especificados. O formato da representação da cadeia de caracteres deve corresponder exatamente a um dos formatos especificados.

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

Converte a representação de cadeia de caracteres especificada de um intervalo de tempo em seu TimeSpan equivalente usando os formatos especificados, as informações de formato específicas de cultura e os estilos. O formato da representação da cadeia de caracteres deve corresponder exatamente a um dos formatos especificados.

Operadores

Addition(TimeSpan, TimeSpan)

Adiciona duas instâncias de TimeSpan especificadas.

Division(TimeSpan, Double)

Retorna um novo TimeSpan objeto cujo valor é o resultado da divisão do especificado timeSpan pelo especificado divisor.

Division(TimeSpan, TimeSpan)

Retorna um novo Double valor que é o resultado da divisão t1 por t2.

Equality(TimeSpan, TimeSpan)

Indica se duas instâncias TimeSpan são iguais.

GreaterThan(TimeSpan, TimeSpan)

Indica se um TimeSpan especificado é maior que outro TimeSpan especificado.

GreaterThanOrEqual(TimeSpan, TimeSpan)

Indica se um TimeSpan especificado é maior ou igual a outro TimeSpan especificado.

Inequality(TimeSpan, TimeSpan)

Indica se duas instâncias TimeSpan não são iguais.

LessThan(TimeSpan, TimeSpan)

Indica se um TimeSpan especificado é menor que outro TimeSpan especificado.

LessThanOrEqual(TimeSpan, TimeSpan)

Indica se um TimeSpan especificado é menor ou igual a outro TimeSpan especificado.

Multiply(Double, TimeSpan)

Retorna um novo objeto TimeSpan, cujo valor é o resultado da multiplicação do factor especificado pela instância de timeSpan especificada.

Multiply(TimeSpan, Double)

Retorna um novo objeto TimeSpan, cujo valor é o resultado da multiplicação da instância de timeSpan especificada pelo factor especificado.

Subtraction(TimeSpan, TimeSpan)

Subtrai um TimeSpan especificado de outro TimeSpan especificado.

UnaryNegation(TimeSpan)

Retorna um TimeSpan cujo valor é o valor negado da instância especificada.

UnaryPlus(TimeSpan)

Retorna a instância especificada do TimeSpan.

Implantações explícitas de interface

IComparable.CompareTo(Object)

Compara esta instância a um objeto especificado e retorna um inteiro que indica se essa instância é mais curta, igual ou mais longa que o objeto especificado.

Aplica-se a

Confira também