Compartilhar via


DateTime.ToUniversalTime Método

Definição

Converte o valor do atual objeto DateTime em UTC (Tempo Universal Coordenado).

public:
 DateTime ToUniversalTime();
public DateTime ToUniversalTime ();
member this.ToUniversalTime : unit -> DateTime
Public Function ToUniversalTime () As DateTime

Retornos

Um objeto cuja Kind propriedade é Utce cujo valor é o equivalente UTC ao valor do objeto atual DateTime ou DateTime.MaxValue se o valor convertido for muito grande para ser representado por um DateTime objeto ou DateTime.MinValue se o valor convertido for muito pequeno para ser representado por um DateTime objeto .

Exemplos

O exemplo a seguir demonstra o ToUniversalTime método.

using namespace System;

void main()
{
   Console::WriteLine("Enter a date and time.");
   String^ strDateTime = Console::ReadLine();

   DateTime localDateTime, univDateTime;
   try
   {
      localDateTime = DateTime::Parse(strDateTime);
      univDateTime = localDateTime.ToUniversalTime();
    
      Console::WriteLine("{0} local time is {1} universal time.",
                         localDateTime, univDateTime );
   }
   catch (FormatException^) 
   {
      Console::WriteLine("Invalid format.");
      return;
   }

   Console::WriteLine("Enter a date and time in universal time.");
   strDateTime = Console::ReadLine();

   try
   {
      univDateTime = DateTime::Parse(strDateTime);
      localDateTime = univDateTime.ToLocalTime();
  
      Console::WriteLine("{0} universal time is {1} local time.",
                         univDateTime, localDateTime );
   }
   catch (FormatException^) 
   {
      Console::WriteLine("Invalid format.");
      return;
   }
}
// The example displays output like the following when run on a 
// computer whose culture is en-US in the Pacific Standard Time zone:
//     Enter a date and time.
//     12/10/2015 6:18 AM
//     12/10/2015 6:18:00 AM local time is 12/10/2015 2:18:00 PM universal time.
//     Enter a date and time in universal time.
//     12/20/2015 6:42:00
//     12/20/2015 6:42:00 AM universal time is 12/19/2015 10:42:00 PM local time.
open System

printfn "Enter a date and time."

try
    let strDateTime = stdin.ReadLine()
    let localDateTime = DateTime.Parse strDateTime
    let univDateTime = localDateTime.ToUniversalTime()

    printfn $"{localDateTime} local time is {univDateTime} universal time."

with :? FormatException ->
    printfn "Invalid format."

printfn "Enter a date and time in universal time."

try
    let strDateTime = stdin.ReadLine()
    let univDateTime = DateTime.Parse strDateTime
    let localDateTime = univDateTime.ToLocalTime()

    printfn $"{univDateTime} universal time is {localDateTime} local time."

with :? FormatException ->
    printfn "Invalid format."

// The example displays output like the following when run on a
// computer whose culture is en-US in the Pacific Standard Time zone:
//     Enter a date and time.
//     12/10/2015 6:18 AM
//     12/10/2015 6:18:00 AM local time is 12/10/2015 2:18:00 PM universal time.
//     Enter a date and time in universal time.
//     12/20/2015 6:42:00
//     12/20/2015 6:42:00 AM universal time is 12/19/2015 10:42:00 PM local time.
using System;

class Example
{
    static void Main()
    {
        DateTime localDateTime, univDateTime;
        
        Console.WriteLine("Enter a date and time.");
        string strDateTime = Console.ReadLine();

        try {
            localDateTime = DateTime.Parse(strDateTime);
            univDateTime = localDateTime.ToUniversalTime();

            Console.WriteLine("{0} local time is {1} universal time.",
                                localDateTime,
                                    univDateTime);
        }
        catch (FormatException) {
            Console.WriteLine("Invalid format.");
            return;
        }

        Console.WriteLine("Enter a date and time in universal time.");
        strDateTime = Console.ReadLine();

        try {
            univDateTime = DateTime.Parse(strDateTime);
            localDateTime = univDateTime.ToLocalTime();

            Console.WriteLine("{0} universal time is {1} local time.",
                                     univDateTime,
                                     localDateTime);
        }
        catch (FormatException) {
            Console.WriteLine("Invalid format.");
            return;
        }
    }
}
// The example displays output like the following when run on a
// computer whose culture is en-US in the Pacific Standard Time zone:
//     Enter a date and time.
//     12/10/2015 6:18 AM
//     12/10/2015 6:18:00 AM local time is 12/10/2015 2:18:00 PM universal time.
//     Enter a date and time in universal time.
//     12/20/2015 6:42:00
//     12/20/2015 6:42:00 AM universal time is 12/19/2015 10:42:00 PM local time.
Module Example
    Sub Main()
      Dim localDateTime, univDateTime As DateTime
      
      Console.WriteLine("Enter a date and time.")
      Dim strDateTime As String = Console.ReadLine()
      Try
         localDateTime = DateTime.Parse(strDateTime)
         univDateTime = localDateTime.ToUniversalTime()
         Console.WriteLine("{0} local time is {1} universal time.", 
                           localDateTime, univDateTime)
      Catch exp As FormatException
         Console.WriteLine("Invalid format.")
      End Try

      Console.WriteLine("Enter a date and time in universal time.")
      strDateTime = Console.ReadLine()
      Try
         univDateTime = DateTime.Parse(strDateTime)
         localDateTime = univDateTime.ToLocalTime()
  
         Console.WriteLine("{0} universal time is {1} local time.", _
                           univDateTime, localDateTime)
      Catch exp As FormatException
         Console.WriteLine("Invalid format.")
      End Try
    End Sub
End Module
' The example displays output like the following when run on a 
' computer whose culture is en-US in the Pacific Standard Time zone:
'     Enter a date and time.
'     12/10/2015 6:18 AM
'     12/10/2015 6:18:00 AM local time is 12/10/2015 2:18:00 PM universal time.
'     Enter a date and time in universal time.
'     12/20/2015 6:42:00
'     12/20/2015 6:42:00 AM universal time is 12/19/2015 10:42:00 PM local time.

O exemplo a seguir usa o método SpecifyKind para demonstrar como a propriedade Kind influencia os métodos de conversão ToLocalTime e ToUniversalTime.

// This code example demonstrates the DateTime Kind, Now, and
// UtcNow properties, and the SpecifyKind(), ToLocalTime(),
// and ToUniversalTime() methods.

open System

// Display the value and Kind property of a DateTime structure, the
// DateTime structure converted to local time, and the DateTime
// structure converted to universal time.

let datePatt = @"M/d/yyyy hh:mm:ss tt"

let display title (inputDt: DateTime) =
    // Display the original DateTime.

    let dispDt = inputDt
    let dtString = dispDt.ToString datePatt
    printfn $"%s{title} {dtString}, Kind = {dispDt.Kind}"

    // Convert inputDt to local time and display the result.
    // If inputDt.Kind is DateTimeKind.Utc, the conversion is performed.
    // If inputDt.Kind is DateTimeKind.Local, the conversion is not performed.
    // If inputDt.Kind is DateTimeKind.Unspecified, the conversion is
    // performed as if inputDt was universal time.

    let dispDt = inputDt.ToLocalTime()
    let dtString = dispDt.ToString datePatt
    printfn $"  ToLocalTime:     {dtString}, Kind = {dispDt.Kind}"

    // Convert inputDt to universal time and display the result.
    // If inputDt.Kind is DateTimeKind.Utc, the conversion is not performed.
    // If inputDt.Kind is DateTimeKind.Local, the conversion is performed.
    // If inputDt.Kind is DateTimeKind.Unspecified, the conversion is
    // performed as if inputDt was local time.

    let dispDt = inputDt.ToUniversalTime()
    let dtString = dispDt.ToString datePatt
    printfn $"  ToUniversalTime: {dtString}, Kind = {dispDt.Kind}\n" 

    // Display the value and Kind property for DateTime.Now and DateTime.UtcNow.

let displayNow title (inputDt: DateTime) =
    let dtString = inputDt.ToString datePatt
    printfn $"%s{title} {dtString}, Kind = {inputDt.Kind}"

[<EntryPoint>]
let main _ =

    // Get the date and time for the current moment, adjusted
    // to the local time zone.

    let saveNow = DateTime.Now

    // Get the date and time for the current moment expressed
    // as coordinated universal time (UTC).

    let saveUtcNow = DateTime.UtcNow

    // Display the value and Kind property of the current moment
    // expressed as UTC and local time.

    displayNow "UtcNow: .........." saveUtcNow
    displayNow "Now: ............." saveNow
    printfn ""

    // Change the Kind property of the current moment to
    // DateTimeKind.Utc and display the result.

    let myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Utc)
    display "Utc: ............." myDt

    // Change the Kind property of the current moment to
    // DateTimeKind.Local and display the result.

    let myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Local)
    display "Local: ..........." myDt

    // Change the Kind property of the current moment to
    // DateTimeKind.Unspecified and display the result.

    let myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Unspecified)
    display "Unspecified: ....." myDt

    0


// This code example produces the following results:
//
// UtcNow: .......... 5/6/2005 09:34:42 PM, Kind = Utc
// Now: ............. 5/6/2005 02:34:42 PM, Kind = Local
//
// Utc: ............. 5/6/2005 02:34:42 PM, Kind = Utc
//   ToLocalTime:     5/6/2005 07:34:42 AM, Kind = Local
//   ToUniversalTime: 5/6/2005 02:34:42 PM, Kind = Utc
//
// Local: ........... 5/6/2005 02:34:42 PM, Kind = Local
//   ToLocalTime:     5/6/2005 02:34:42 PM, Kind = Local
//   ToUniversalTime: 5/6/2005 09:34:42 PM, Kind = Utc
//
// Unspecified: ..... 5/6/2005 02:34:42 PM, Kind = Unspecified
//   ToLocalTime:     5/6/2005 07:34:42 AM, Kind = Local
//   ToUniversalTime: 5/6/2005 09:34:42 PM, Kind = Utc
// This code example demonstrates the DateTime Kind, Now, and
// UtcNow properties, and the SpecifyKind(), ToLocalTime(),
// and ToUniversalTime() methods.

using System;

class Sample
{
    public static void Main()
    {
        // Get the date and time for the current moment, adjusted
        // to the local time zone.

        DateTime saveNow = DateTime.Now;

        // Get the date and time for the current moment expressed
        // as coordinated universal time (UTC).

        DateTime saveUtcNow = DateTime.UtcNow;
        DateTime myDt;

        // Display the value and Kind property of the current moment
        // expressed as UTC and local time.

        DisplayNow("UtcNow: ..........", saveUtcNow);
        DisplayNow("Now: .............", saveNow);
        Console.WriteLine();

        // Change the Kind property of the current moment to
        // DateTimeKind.Utc and display the result.

        myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Utc);
        Display("Utc: .............", myDt);

        // Change the Kind property of the current moment to
        // DateTimeKind.Local and display the result.

        myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Local);
        Display("Local: ...........", myDt);

        // Change the Kind property of the current moment to
        // DateTimeKind.Unspecified and display the result.

        myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Unspecified);
        Display("Unspecified: .....", myDt);
    }

    // Display the value and Kind property of a DateTime structure, the
    // DateTime structure converted to local time, and the DateTime
    // structure converted to universal time.

    public static string datePatt = @"M/d/yyyy hh:mm:ss tt";
    public static void Display(string title, DateTime inputDt)
    {
        DateTime dispDt = inputDt;
        string dtString;

        // Display the original DateTime.

        dtString = dispDt.ToString(datePatt);
        Console.WriteLine("{0} {1}, Kind = {2}",
                          title, dtString, dispDt.Kind);

        // Convert inputDt to local time and display the result.
        // If inputDt.Kind is DateTimeKind.Utc, the conversion is performed.
        // If inputDt.Kind is DateTimeKind.Local, the conversion is not performed.
        // If inputDt.Kind is DateTimeKind.Unspecified, the conversion is
        // performed as if inputDt was universal time.

        dispDt = inputDt.ToLocalTime();
        dtString = dispDt.ToString(datePatt);
        Console.WriteLine("  ToLocalTime:     {0}, Kind = {1}",
                          dtString, dispDt.Kind);

        // Convert inputDt to universal time and display the result.
        // If inputDt.Kind is DateTimeKind.Utc, the conversion is not performed.
        // If inputDt.Kind is DateTimeKind.Local, the conversion is performed.
        // If inputDt.Kind is DateTimeKind.Unspecified, the conversion is
        // performed as if inputDt was local time.

        dispDt = inputDt.ToUniversalTime();
        dtString = dispDt.ToString(datePatt);
        Console.WriteLine("  ToUniversalTime: {0}, Kind = {1}",
                          dtString, dispDt.Kind);
        Console.WriteLine();
    }

    // Display the value and Kind property for DateTime.Now and DateTime.UtcNow.

    public static void DisplayNow(string title, DateTime inputDt)
    {
        string dtString = inputDt.ToString(datePatt);
        Console.WriteLine("{0} {1}, Kind = {2}",
                          title, dtString, inputDt.Kind);
    }
}

/*
This code example produces the following results:

UtcNow: .......... 5/6/2005 09:34:42 PM, Kind = Utc
Now: ............. 5/6/2005 02:34:42 PM, Kind = Local

Utc: ............. 5/6/2005 02:34:42 PM, Kind = Utc
  ToLocalTime:     5/6/2005 07:34:42 AM, Kind = Local
  ToUniversalTime: 5/6/2005 02:34:42 PM, Kind = Utc

Local: ........... 5/6/2005 02:34:42 PM, Kind = Local
  ToLocalTime:     5/6/2005 02:34:42 PM, Kind = Local
  ToUniversalTime: 5/6/2005 09:34:42 PM, Kind = Utc

Unspecified: ..... 5/6/2005 02:34:42 PM, Kind = Unspecified
  ToLocalTime:     5/6/2005 07:34:42 AM, Kind = Local
  ToUniversalTime: 5/6/2005 09:34:42 PM, Kind = Utc

*/

' This code example demonstrates the DateTime Kind, Now, and
' UtcNow properties, and the SpecifyKind(), ToLocalTime(), 
' and ToUniversalTime() methods.
Class Sample
    Public Shared Sub Main() 
        ' Get the date and time for the current moment, adjusted 
        ' to the local time zone.
        Dim saveNow As DateTime = DateTime.Now
        
        ' Get the date and time for the current moment expressed 
        ' as coordinated universal time (UTC).
        Dim saveUtcNow As DateTime = DateTime.UtcNow
        Dim myDt As DateTime
        
        ' Display the value and Kind property of the current moment 
        ' expressed as UTC and local time.
        DisplayNow("UtcNow: ..........", saveUtcNow)
        DisplayNow("Now: .............", saveNow)
        Console.WriteLine()
        
        ' Change the Kind property of the current moment to 
        ' DateTimeKind.Utc and display the result.
        myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Utc)
        Display("Utc: .............", myDt)
        
        ' Change the Kind property of the current moment to 
        ' DateTimeKind.Local and display the result.
        myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Local)
        Display("Local: ...........", myDt)
        
        ' Change the Kind property of the current moment to 
        ' DateTimeKind.Unspecified and display the result.
        myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Unspecified)
        Display("Unspecified: .....", myDt)
    End Sub
    
    ' Display the value and Kind property of a DateTime structure, the 
    ' DateTime structure converted to local time, and the DateTime 
    ' structure converted to universal time. 

    Public Shared datePatt As String = "M/d/yyyy hh:mm:ss tt"
    
    Public Shared Sub Display(ByVal title As String, ByVal inputDt As DateTime) 
        Dim dispDt As DateTime = inputDt
        Dim dtString As String
        
        ' Display the original DateTime.
        dtString = dispDt.ToString(datePatt)
        Console.WriteLine("{0} {1}, Kind = {2}", title, dtString, dispDt.Kind)
        
        ' Convert inputDt to local time and display the result. 
        ' If inputDt.Kind is DateTimeKind.Utc, the conversion is performed.
        ' If inputDt.Kind is DateTimeKind.Local, the conversion is not performed.
        ' If inputDt.Kind is DateTimeKind.Unspecified, the conversion is 
        ' performed as if inputDt was universal time.
        dispDt = inputDt.ToLocalTime()
        dtString = dispDt.ToString(datePatt)
        Console.WriteLine("  ToLocalTime:     {0}, Kind = {1}", dtString, dispDt.Kind)
        
        ' Convert inputDt to universal time and display the result. 
        ' If inputDt.Kind is DateTimeKind.Utc, the conversion is not performed.
        ' If inputDt.Kind is DateTimeKind.Local, the conversion is performed.
        ' If inputDt.Kind is DateTimeKind.Unspecified, the conversion is 
        ' performed as if inputDt was local time.
        dispDt = inputDt.ToUniversalTime()
        dtString = dispDt.ToString(datePatt)
        Console.WriteLine("  ToUniversalTime: {0}, Kind = {1}", dtString, dispDt.Kind)
        Console.WriteLine()
    End Sub
    
    
    ' Display the value and Kind property for DateTime.Now and DateTime.UtcNow.

    Public Shared Sub DisplayNow(ByVal title As String, ByVal inputDt As DateTime) 
        Dim dtString As String = inputDt.ToString(datePatt)
        Console.WriteLine("{0} {1}, Kind = {2}", title, dtString, inputDt.Kind)
    End Sub
End Class

'
'This code example produces the following results:
'
'UtcNow: .......... 5/6/2005 09:34:42 PM, Kind = Utc
'Now: ............. 5/6/2005 02:34:42 PM, Kind = Local
'
'Utc: ............. 5/6/2005 02:34:42 PM, Kind = Utc
'  ToLocalTime:     5/6/2005 07:34:42 AM, Kind = Local
'  ToUniversalTime: 5/6/2005 02:34:42 PM, Kind = Utc
'
'Local: ........... 5/6/2005 02:34:42 PM, Kind = Local
'  ToLocalTime:     5/6/2005 02:34:42 PM, Kind = Local
'  ToUniversalTime: 5/6/2005 09:34:42 PM, Kind = Utc
'
'Unspecified: ..... 5/6/2005 02:34:42 PM, Kind = Unspecified
'  ToLocalTime:     5/6/2005 07:34:42 AM, Kind = Local
'  ToUniversalTime: 5/6/2005 09:34:42 PM, Kind = Utc
'

Comentários

O UTC (Tempo Universal Coordenado) é igual à hora local menos o deslocamento UTC. Para obter mais informações sobre o deslocamento UTC, consulte TimeZoneInfo.GetUtcOffset. A conversão também leva em conta a regra de horário de verão que se aplica ao horário representado pelo objeto atual DateTime .

Importante

Em sistemas Windows XP, o ToUniversalTime método reconhece apenas a regra de ajuste atual ao converter de hora local para UTC. Como resultado, as conversões para períodos antes da regra de ajuste atual entrar em vigor podem não refletir com precisão a diferença entre a hora local e o UTC.

A partir do .NET Framework versão 2.0, o valor retornado pelo ToUniversalTime método é determinado pela Kind propriedade do objeto atualDateTime. A tabela a seguir descreve os possíveis resultados.

Tipo Resultados
Utc Nenhuma conversão é executada.
Local O objeto atual DateTime é convertido em UTC.
Unspecified O objeto atual DateTime é considerado uma hora local e a conversão é executada como se Kind fosse Local.

Observação

O ToUniversalTime método converte um DateTime valor de hora local em UTC. Para converter a hora em um fuso horário não local em UTC, use o TimeZoneInfo.ConvertTimeToUtc(DateTime, TimeZoneInfo) método . Para converter uma hora cujo deslocamento de UTC é conhecido, use o ToUniversalTime método .

Se o valor da instância de data e hora for uma hora ambígua, esse método assumirá que é uma hora padrão. (Uma hora ambígua é aquela que pode ser mapeada para um horário padrão ou para um horário de verão no fuso horário local) Se o valor da instância de data e hora for uma hora inválida, esse método simplesmente subtrairá a hora local do deslocamento UTC do fuso horário local para retornar UTC. (Uma hora inválida é aquela que não existe devido à aplicação de regras de ajuste de horário de verão.)

Notas aos Chamadores

Às vezes, o ToUniversalTime() método é usado para converter uma hora local em UTC. Em ToLocalTime() seguida, o método é chamado para restaurar a hora local original. No entanto, se a hora original representar uma hora inválida no fuso horário local, os dois valores de hora local não serão iguais. Para obter informações adicionais e um exemplo, consulte o ToLocalTime() método .

Em sistemas Windows XP, o ToUniversalTime() método reconhece apenas a regra de ajuste atual para o fuso horário local, que se aplica a todas as datas, incluindo datas de nível inferior (ou seja, datas anteriores à data de início da regra de ajuste atual). Aplicativos em execução no Windows XP que exigem cálculos de data e hora locais historicamente precisos devem contornar esse comportamento usando o FindSystemTimeZoneById(String) método para recuperar um TimeZoneInfo objeto que corresponde ao fuso horário local e chamar seu ConvertTimeToUtc(DateTime, TimeZoneInfo) método.

O exemplo a seguir ilustra a diferença entre os ToUniversalTime() métodos e ConvertTimeToUtc(DateTime, TimeZoneInfo) em um sistema Windows XP no fuso horário do Pacífico dos EUA. As duas primeiras chamadas de método aplicam a regra de ajuste de fuso horário atual (que entrou em vigor em 2007) a uma data em 2006. A regra de ajuste atual prevê a transição para o horário de verão no segundo domingo de março; a regra anterior, que estava em vigor em 2006, previa que a transição para o horário de verão ocorresse no primeiro domingo de abril. Somente a terceira chamada de método executa com precisão essa conversão histórica de data e hora.

using System;

public class Example
{
   public static void Main()
   {
      DateTime date1 = new DateTime(2006, 3, 21, 2, 0, 0);

      Console.WriteLine(date1.ToUniversalTime());
      Console.WriteLine(TimeZoneInfo.ConvertTimeToUtc(date1));

      TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
      Console.WriteLine(TimeZoneInfo.ConvertTimeToUtc(date1, tz));
   }
}
// The example displays the following output on Windows XP systems:
//       3/21/2006 9:00:00 AM
//       3/21/2006 9:00:00 AM
//       3/21/2006 10:00:00 AM
open System

let date1 = DateTime(2006, 3, 21, 2, 0, 0)

printfn $"{date1.ToUniversalTime()}"
printfn $"{TimeZoneInfo.ConvertTimeToUtc date1}"

let tz = TimeZoneInfo.FindSystemTimeZoneById "Pacific Standard Time"
printfn $"{TimeZoneInfo.ConvertTimeToUtc(date1, tz)}"

// The example displays the following output on Windows XP systems:
//       3/21/2006 9:00:00 AM
//       3/21/2006 9:00:00 AM
//       3/21/2006 10:00:00 AM
Module Example
   Public Sub Main()
      Dim date1 As Date = #3/21/2006 2:00AM#
      
      Console.WriteLine(date1.ToUniversalTime())
      Console.WriteLine(TimeZoneInfo.ConvertTimeToUtc(date1))
      
      Dim tz As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time")  
      Console.WriteLine(TimeZoneInfo.ConvertTimeToUtc(date1, tz))     
   End Sub
End Module
' The example displays the following output on Windows XP systems:
'       3/21/2006 9:00:00 AM
'       3/21/2006 9:00:00 AM
'       3/21/2006 10:00:00 AM

Aplica-se a

Confira também