Condividi tramite


TimeZoneInfo.ConvertTimeToUtc Metodo

Definizione

Converte una data e un'ora in ora UTC (Coordinated Universal Time).

Overload

ConvertTimeToUtc(DateTime)

Converte la data e l'ora specificate in ora UTC (Coordinated Universal Time).

ConvertTimeToUtc(DateTime, TimeZoneInfo)

Converte l'ora di un fuso orario specificato in ora UTC (Coordinated Universal Time).

ConvertTimeToUtc(DateTime)

Origine:
TimeZoneInfo.cs
Origine:
TimeZoneInfo.cs
Origine:
TimeZoneInfo.cs

Converte la data e l'ora specificate in ora UTC (Coordinated Universal Time).

public:
 static DateTime ConvertTimeToUtc(DateTime dateTime);
public static DateTime ConvertTimeToUtc (DateTime dateTime);
static member ConvertTimeToUtc : DateTime -> DateTime
Public Shared Function ConvertTimeToUtc (dateTime As DateTime) As DateTime

Parametri

dateTime
DateTime

Data e ora da convertire.

Restituisce

Ora UTC (Coordinated Universal Time) corrispondente al parametro dateTime. La proprietà Kind del valore DateTime è sempre impostata su Utc.

Eccezioni

TimeZoneInfo.Local.IsInvalidDateTime( dateTime ) restituisce true.

Esempio

Nell'esempio seguente viene illustrata rispettivamente la conversione dei valori temporali la cui Kind proprietà è DateTimeKind.Utc, DateTimeKind.Locale , DateTimeKind.Unspecified. Illustra anche la conversione di tempi ambigui e non validi.

DateTime datNowLocal = DateTime.Now;
Console.WriteLine("Converting {0}, Kind {1}:", datNowLocal, datNowLocal.Kind);
Console.WriteLine("   ConvertTimeToUtc: {0}, Kind {1}", TimeZoneInfo.ConvertTimeToUtc(datNowLocal), TimeZoneInfo.ConvertTimeToUtc(datNowLocal).Kind);
Console.WriteLine();

DateTime datNowUtc = DateTime.UtcNow;
Console.WriteLine("Converting {0}, Kind {1}", datNowUtc, datNowUtc.Kind);
Console.WriteLine("   ConvertTimeToUtc: {0}, Kind {1}", TimeZoneInfo.ConvertTimeToUtc(datNowUtc), TimeZoneInfo.ConvertTimeToUtc(datNowUtc).Kind);
Console.WriteLine();

DateTime datNow = new DateTime(2007, 10, 26, 13, 32, 00);
Console.WriteLine("Converting {0}, Kind {1}", datNow, datNow.Kind);
Console.WriteLine("   ConvertTimeToUtc: {0}, Kind {1}", TimeZoneInfo.ConvertTimeToUtc(datNow), TimeZoneInfo.ConvertTimeToUtc(datNow).Kind);
Console.WriteLine();

DateTime datAmbiguous = new DateTime(2007, 11, 4, 1, 30, 00);    
Console.WriteLine("Converting {0}, Kind {1}, Ambiguous {2}", datAmbiguous, datAmbiguous.Kind, TimeZoneInfo.Local.IsAmbiguousTime(datAmbiguous));
Console.WriteLine("   ConvertTimeToUtc: {0}, Kind {1}", TimeZoneInfo.ConvertTimeToUtc(datAmbiguous), TimeZoneInfo.ConvertTimeToUtc(datAmbiguous).Kind);
Console.WriteLine();

DateTime datInvalid = new DateTime(2007, 3, 11, 02, 30, 00);    
Console.WriteLine("Converting {0}, Kind {1}, Invalid {2}", datInvalid, datInvalid.Kind, TimeZoneInfo.Local.IsInvalidTime(datInvalid));
try
{
   Console.WriteLine("   ConvertTimeToUtc: {0}, Kind {1}", TimeZoneInfo.ConvertTimeToUtc(datInvalid), TimeZoneInfo.ConvertTimeToUtc(datInvalid).Kind);
}
catch (ArgumentException e)
{   
   Console.WriteLine("   {0}: Cannot convert {1} to UTC.", e.GetType().Name, datInvalid);
}
Console.WriteLine();

DateTime datNearMax = new DateTime(9999, 12, 31, 22, 00, 00);
Console.WriteLine("Converting {0}, Kind {1}", datNearMax, datNearMax.Kind);
Console.WriteLine("   ConvertTimeToUtc: {0}, Kind {1}", TimeZoneInfo.ConvertTimeToUtc(datNearMax), TimeZoneInfo.ConvertTimeToUtc(datNearMax).Kind);
Console.WriteLine();
//
// This example produces the following output if the local time zone 
// is Pacific Standard Time:
//
//    Converting 8/31/2007 2:26:28 PM, Kind Local:
//       ConvertTimeToUtc: 8/31/2007 9:26:28 PM, Kind Utc
//    
//    Converting 8/31/2007 9:26:28 PM, Kind Utc
//       ConvertTimeToUtc: 8/31/2007 9:26:28 PM, Kind Utc
//    
//    Converting 10/26/2007 1:32:00 PM, Kind Unspecified
//       ConvertTimeToUtc: 10/26/2007 8:32:00 PM, Kind Utc
//    
//    Converting 11/4/2007 1:30:00 AM, Kind Unspecified, Ambiguous True
//       ConvertTimeToUtc: 11/4/2007 9:30:00 AM, Kind Utc
//    
//    Converting 3/11/2007 2:30:00 AM, Kind Unspecified, Invalid True
//       ArgumentException: Cannot convert 3/11/2007 2:30:00 AM to UTC.
//    
//    Converting 12/31/9999 10:00:00 PM, Kind Unspecified
//       ConvertTimeToUtc: 12/31/9999 11:59:59 PM, Kind Utc
//
let datNowLocal = DateTime.Now
printfn $"Converting {datNowLocal}, Kind {datNowLocal.Kind}:"
printfn $"   ConvertTimeToUtc: {TimeZoneInfo.ConvertTimeToUtc datNowLocal}, Kind {TimeZoneInfo.ConvertTimeToUtc(datNowLocal).Kind}\n"

let datNowUtc = DateTime.UtcNow
printfn $"Converting {datNowUtc}, Kind {datNowUtc.Kind}"
printfn $"   ConvertTimeToUtc: {TimeZoneInfo.ConvertTimeToUtc datNowUtc}, Kind {TimeZoneInfo.ConvertTimeToUtc(datNowUtc).Kind}\n"

let datNow = DateTime(2007, 10, 26, 13, 32, 00)
printfn $"Converting {datNow}, Kind {datNow.Kind}"
printfn $"   ConvertTimeToUtc: {TimeZoneInfo.ConvertTimeToUtc datNow}, Kind {TimeZoneInfo.ConvertTimeToUtc(datNow).Kind}\n"

let datAmbiguous = DateTime(2007, 11, 4, 1, 30, 00)
printfn $"Converting {datAmbiguous}, Kind {datAmbiguous.Kind}, Ambiguous {TimeZoneInfo.Local.IsAmbiguousTime datAmbiguous}"
printfn $"   ConvertTimeToUtc: {TimeZoneInfo.ConvertTimeToUtc datAmbiguous}, Kind {TimeZoneInfo.ConvertTimeToUtc(datAmbiguous).Kind}\n"

let datInvalid = DateTime(2007, 3, 11, 02, 30, 00)    
printfn $"Converting {datInvalid}, Kind {datInvalid.Kind}, Invalid {TimeZoneInfo.Local.IsInvalidTime datInvalid}"
try
    printfn $"   ConvertTimeToUtc: {TimeZoneInfo.ConvertTimeToUtc datInvalid}, Kind {TimeZoneInfo.ConvertTimeToUtc(datInvalid).Kind}"
with :? ArgumentException as e ->
    printfn $"   {e.GetType().Name}: Cannot convert {datInvalid} to UTC."
printfn ""

let datNearMax = DateTime(9999, 12, 31, 22, 00, 00)
printfn $"Converting {datNearMax}, Kind {datNearMax.Kind}"
printfn $"   ConvertTimeToUtc: {TimeZoneInfo.ConvertTimeToUtc datNearMax}, Kind {TimeZoneInfo.ConvertTimeToUtc(datNearMax).Kind}\n"
//
// This example produces the following output if the local time zone 
// is Pacific Standard Time:
//
//    Converting 8/31/2007 2:26:28 PM, Kind Local:
//       ConvertTimeToUtc: 8/31/2007 9:26:28 PM, Kind Utc
//    
//    Converting 8/31/2007 9:26:28 PM, Kind Utc
//       ConvertTimeToUtc: 8/31/2007 9:26:28 PM, Kind Utc
//    
//    Converting 10/26/2007 1:32:00 PM, Kind Unspecified
//       ConvertTimeToUtc: 10/26/2007 8:32:00 PM, Kind Utc
//    
//    Converting 11/4/2007 1:30:00 AM, Kind Unspecified, Ambiguous True
//       ConvertTimeToUtc: 11/4/2007 9:30:00 AM, Kind Utc
//    
//    Converting 3/11/2007 2:30:00 AM, Kind Unspecified, Invalid True
//       ArgumentException: Cannot convert 3/11/2007 2:30:00 AM to UTC.
//    
//    Converting 12/31/9999 10:00:00 PM, Kind Unspecified
//       ConvertTimeToUtc: 12/31/9999 11:59:59 PM, Kind Utc
//
Dim datNowLocal As Date = Date.Now
Console.WriteLine("Converting {0}, Kind {1}:", datNowLocal, datNowLocal.Kind)
Console.WriteLine("   ConvertTimeToUtc: {0}, Kind {1}", TimeZoneInfo.ConvertTimeToUtc(datNowLocal), TimeZoneInfo.ConvertTimeToUtc(datNowLocal).Kind)
Console.WriteLine()

Dim datNowUtc As Date = Date.UtcNow
Console.WriteLine("Converting {0}, Kind {1}", datNowUtc, datNowUtc.Kind)
Console.WriteLine("   ConvertTimeToUtc: {0}, Kind {1}", TimeZoneInfo.ConvertTimeToUtc(datNowUtc), TimeZoneInfo.ConvertTimeToUtc(datNowUtc).Kind)
Console.WriteLine()

Dim datNow As Date = CDate("10/26/2007 1:32:00 PM")
Console.WriteLine("Converting {0}, Kind {1}", datNow, datNow.Kind)
Console.WriteLine("   ConvertTimeToUtc: {0}, Kind {1}", TimeZoneInfo.ConvertTimeToUtc(datNow), TimeZoneInfo.ConvertTimeToUtc(datNow).Kind)
Console.WriteLine()

Dim datAmbiguous As Date = #11/4/2007 1:30:00AM#    
Console.WriteLine("Converting {0}, Kind {1}, Ambiguous {2}", datAmbiguous, datAmbiguous.Kind, TimeZoneInfo.Local.IsAmbiguousTime(datAmbiguous))
Console.WriteLine("   ConvertTimeToUtc: {0}, Kind {1}", TimeZoneInfo.ConvertTimeToUtc(datAmbiguous), TimeZoneInfo.ConvertTimeToUtc(datAmbiguous).Kind)
Console.WriteLine()

Dim datInvalid As Date = #03/11/2007 2:30:00AM#    
Console.WriteLine("Converting {0}, Kind {1}, Invalid {2}", datInvalid, datInvalid.Kind, TimeZoneInfo.Local.IsInvalidTime(datInvalid))
Try
   Console.WriteLine("   ConvertTimeToUtc: {0}, Kind {1}", TimeZoneInfo.ConvertTimeToUtc(datInvalid), TimeZoneInfo.ConvertTimeToUtc(datInvalid).Kind)
Catch e As ArgumentException
   Console.WriteLine("   {0}: Cannot convert {1} to UTC.", e.GetType().Name, datInvalid)
End Try
Console.WriteLine()

Dim datNearMax As Date = #12/31/9999 10:00:00PM#
Console.WriteLine("Converting {0}, Kind {1}", datNearMax, datNearMax.Kind)
Console.WriteLine("   ConvertTimeToUtc: {0}, Kind {1}", TimeZoneInfo.ConvertTimeToUtc(datNearMax), TimeZoneInfo.ConvertTimeToUtc(datNearMax).Kind)
Console.WriteLine()
'
' This example produces the following output if the local time zone 
' is Pacific Standard Time:
'
'    Converting 8/31/2007 2:26:28 PM, Kind Local:
'       ConvertTimeToUtc: 8/31/2007 9:26:28 PM, Kind Utc
'    
'    Converting 8/31/2007 9:26:28 PM, Kind Utc
'       ConvertTimeToUtc: 8/31/2007 9:26:28 PM, Kind Utc
'    
'    Converting 10/26/2007 1:32:00 PM, Kind Unspecified
'       ConvertTimeToUtc: 10/26/2007 8:32:00 PM, Kind Utc
'    
'    Converting 11/4/2007 1:30:00 AM, Kind Unspecified, Ambiguous True
'       ConvertTimeToUtc: 11/4/2007 9:30:00 AM, Kind Utc
'    
'    Converting 3/11/2007 2:30:00 AM, Kind Unspecified, Invalid True
'       ArgumentException: Cannot convert 3/11/2007 2:30:00 AM to UTC.
'    
'    Converting 12/31/9999 10:00:00 PM, Kind Unspecified
'       ConvertTimeToUtc: 12/31/9999 11:59:59 PM, Kind Utc

Commenti

La conversione esatta eseguita dipende dal valore della Kind proprietà del dateTime parametro, come illustrato nella tabella seguente.

Proprietà DateTime.Kind Conversione
DateTimeKind.Local Converte dall'ora locale all'ora UTC (Coordinated Universal Time).
DateTimeKind.Unspecified Si supponga che dateTime sia ora locale e converte dall'ora locale all'ora UTC.
DateTimeKind.Utc Restituisce dateTime invariato.

Se dateTime corrisponde a un'ora locale ambigua, questo metodo presuppone che sia ora locale standard. Se dateTime corrisponde a un'ora locale non valida, il metodo genera un ArgumentExceptionoggetto .

Nota

Se il fuso orario locale del computer corrente include più regole di regolazione, questo overload del ConvertTimeToUtc metodo può restituire risultati diversi dai TimeZone.ToUniversalTime metodi e DateTime.ToUniversalTime . TimeZone.ToUniversalTime applica sempre la regola di regolazione corrente alla conversione del fuso orario, indipendentemente dal fatto che dateTime si trovi all'interno del relativo intervallo di date. E quando si esegue in .NET Framework 3.5, DateTime.ToUniversalTime applica anche la regola di regolazione corrente alla conversione del fuso orario, indipendentemente dal fatto che dateTime si trovi all'interno dell'intervallo di date.

Se l'equivalente UTC di dateTime è precedente DateTime.MinValue o successivo, DateTime.MaxValuequesto metodo restituisce MinValue o MaxValue, rispettivamente.

Vedi anche

Si applica a

ConvertTimeToUtc(DateTime, TimeZoneInfo)

Origine:
TimeZoneInfo.cs
Origine:
TimeZoneInfo.cs
Origine:
TimeZoneInfo.cs

Converte l'ora di un fuso orario specificato in ora UTC (Coordinated Universal Time).

public:
 static DateTime ConvertTimeToUtc(DateTime dateTime, TimeZoneInfo ^ sourceTimeZone);
public static DateTime ConvertTimeToUtc (DateTime dateTime, TimeZoneInfo sourceTimeZone);
static member ConvertTimeToUtc : DateTime * TimeZoneInfo -> DateTime
Public Shared Function ConvertTimeToUtc (dateTime As DateTime, sourceTimeZone As TimeZoneInfo) As DateTime

Parametri

dateTime
DateTime

Data e ora da convertire.

sourceTimeZone
TimeZoneInfo

Fuso orario di dateTime.

Restituisce

Ora UTC (Coordinated Universal Time) corrispondente al parametro dateTime. La proprietà Kind dell'oggetto DateTime è sempre impostata su Utc.

Eccezioni

dateTime. Kind è Utc e sourceTimeZone non è uguale Utca .

-oppure-

dateTime. Kind è Local e sourceTimeZone non è uguale Locala .

-oppure-

sourceTimeZone .IsInvalidDateTime( dateTime ) restituisce true.

sourceTimeZone è null.

Esempio

Nell'esempio seguente viene recuperata la data corrente dal sistema locale e la converte in Utc (Coordinated Universal Time), quindi la converte in Ora standard di Tokyo e infine converte da Tokyo Standard Time a UTC. Si noti che le due ore UTC sono identiche.

using System;

public class Example
{
   public static void Main()
   {
      // Get time in local time zone 
      DateTime thisTime = DateTime.Now;
      Console.WriteLine("Time in {0} zone: {1}", TimeZoneInfo.Local.IsDaylightSavingTime(thisTime) ?
                        TimeZoneInfo.Local.DaylightName : TimeZoneInfo.Local.StandardName, thisTime);
      Console.WriteLine("   UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(thisTime, TimeZoneInfo.Local));
      // Get Tokyo Standard Time zone
      TimeZoneInfo tst = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time");
      DateTime tstTime = TimeZoneInfo.ConvertTime(thisTime, TimeZoneInfo.Local, tst);      
      Console.WriteLine("Time in {0} zone: {1}", tst.IsDaylightSavingTime(tstTime) ?
                        tst.DaylightName : tst.StandardName, tstTime);
      Console.WriteLine("   UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(tstTime, tst));
   }
}
// The example displays output like the following when run on a system in the
// U.S. Pacific Standard Time zone:
//       Time in Pacific Standard Time zone: 12/6/2013 10:57:51 AM
//          UTC Time: 12/6/2013 6:57:51 PM
//       Time in Tokyo Standard Time zone: 12/7/2013 3:57:51 AM
//          UTC Time: 12/6/2013 6:57:51 PM
open System

// Get time in local time zone 
let thisTime = DateTime.Now
printfn $"Time in {if TimeZoneInfo.Local.IsDaylightSavingTime thisTime then TimeZoneInfo.Local.DaylightName else TimeZoneInfo.Local.StandardName} zone: {thisTime}"
printfn $"   UTC Time: {TimeZoneInfo.ConvertTimeToUtc(thisTime, TimeZoneInfo.Local)}"
// Get Tokyo Standard Time zone
let tst = TimeZoneInfo.FindSystemTimeZoneById "Tokyo Standard Time"
let tstTime = TimeZoneInfo.ConvertTime(thisTime, TimeZoneInfo.Local, tst)      
printfn $"Time in {if tst.IsDaylightSavingTime tstTime then tst.DaylightName else tst.StandardName} zone: {tstTime}"
printfn $"   UTC Time: {TimeZoneInfo.ConvertTimeToUtc(tstTime, tst)}"
// The example displays output like the following when run on a system in the
// U.S. Pacific Standard Time zone:
//       Time in Pacific Standard Time zone: 12/6/2013 10:57:51 AM
//          UTC Time: 12/6/2013 6:57:51 PM
//       Time in Tokyo Standard Time zone: 12/7/2013 3:57:51 AM
//          UTC Time: 12/6/2013 6:57:51 PM
Module Example
   Public Sub Main()
      ' Get time in local time zone 
      Dim thisTime As Date = Date.Now
      Console.WriteLine("Time in {0} zone: {1}", IIf(TimeZoneInfo.Local.IsDaylightSavingTime(thisTime), 
                        TimeZoneInfo.Local.DaylightName, TimeZoneInfo.Local.StandardName), thisTime)
      Console.WriteLine("   UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(thisTime, TimeZoneInfo.Local))
      ' Get Tokyo Standard Time zone
      Dim tst As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time")
      Dim tstTime As Date = TimeZoneInfo.ConvertTime(thisTime, TimeZoneInfo.Local, tst)      
      Console.WriteLine("Time in {0} zone: {1}", IIf(tst.IsDaylightSavingTime(tstTime), 
                        tst.DaylightName, tst.StandardName), tstTime)
      Console.WriteLine("   UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(tstTime, tst))
   End Sub
End Module
' The example displays output like the following when run on a system in the U.S.
' Pacific Standard Time zone:
'    Time in Pacific Standard Time zone: 12/6/2013 10:57:51 AM
'       UTC Time: 12/6/2013 6:57:51 PM
'    Time in Tokyo Standard Time zone: 12/7/2013 3:57:51 AM
'       UTC Time: 12/6/2013 6:57:51 PM

Commenti

Se la proprietà del dateTime parametro è uguale a e il sourceTimeZoneKind parametro è uguale TimeZoneInfo.UtcDateTimeKind.Utc a , questo metodo restituisce dateTime senza eseguire alcuna conversione.

Se dateTime corrisponde a un'ora ambigua, questo metodo presuppone che sia l'ora standard del fuso orario di origine. Se dateTime corrisponde a un tempo non valido, questo metodo genera un ArgumentExceptionoggetto .

Se l'equivalente UTC (Coordinated Universal Time) di dateTime è precedente DateTime.MinValue o successivo a , DateTime.MaxValuequesto metodo restituisce MinValue o MaxValue, rispettivamente.

Vedi anche

Si applica a