DateTime.ToUniversalTime 方法

定義

將目前 DateTime 物件的值轉換成國際標準時間 (UTC)。

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

傳回

屬性 KindUtc 的物件,且其值為與目前 DateTime 物件值相等的 UTC,如果轉換的值太大而無法由 DateTime 物件表示,則為DateTime.MaxValue;如果轉換的值太小,則為DateTime.MinValue,無法由 DateTime 物件表示。

範例

下列範例示範 ToUniversalTime 方法。

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.

下列範例會 SpecifyKind 使用 方法來示範 屬性如何影響 KindToLocalTimeToUniversalTime 轉換方法。

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

備註

國際標準時間 (UTC) 等於當地時間減去 UTC 位移。 如需 UTC 位移的詳細資訊,請參閱 TimeZoneInfo.GetUtcOffset 。 轉換也會考慮套用至目前 DateTime 物件所代表之時間的日光節約時間規則。

重要

在 Windows XP 系統上, ToUniversalTime 此方法只會在從當地時間轉換為 UTC 時辨識目前的調整規則。 因此,目前調整規則生效之前的期間轉換可能不會正確反映當地時間與 UTC 之間的差異。

從 .NET Framework 2.0 版開始,方法傳 ToUniversalTime 回的值是由 Kind 目前 DateTime 物件的 屬性所決定。 下表描述可能的結果。

種類 結果
Utc 不會執行轉換。
Local 目前的 DateTime 物件會轉換成 UTC。
Unspecified 目前的 DateTime 物件假設為當地時間,而轉換的執行方式就像 KindLocal 一樣。

注意

方法 ToUniversalTime 會將 DateTime 值從當地時間轉換為 UTC。 若要將非當地時區中的時間轉換為 UTC,請使用 TimeZoneInfo.ConvertTimeToUtc(DateTime, TimeZoneInfo) 方法。 若要轉換已知從 UTC 位移的時間,請使用 ToUniversalTime 方法。

如果日期和時間實例值是模棱兩可的時間,這個方法會假設它是標準時間。 (模棱兩可的時間是可以對應至標準時間或當地時區的日光節約時間) 如果日期和時間實例值是不正確時間,此方法只會從當地時區的 UTC 位移中減去當地時間以傳回 UTC。 (不正確時間是因為日光節約時間調整規則的套用而不存在的時間。)

給呼叫者的注意事項

方法 ToUniversalTime() 有時會用來將當地時間轉換為 UTC。 接著會 ToLocalTime() 呼叫 方法來還原原始本地時間。 不過,如果原始時間代表當地時區中的無效時間,則兩個當地時間值將不會相等。 如需其他資訊和範例,請參閱 ToLocalTime() 方法。

在 Windows XP 系統上, ToUniversalTime() 此方法只會辨識當地時區的目前調整規則,它會套用至所有日期,包括下層日期 (也就是早于目前調整規則開始日期的日期) 。 在 Windows XP 上執行的應用程式需要過去精確的當地日期和時間計算,必須使用 FindSystemTimeZoneById(String) 方法來擷取 TimeZoneInfo 對應至當地時區並呼叫其 ConvertTimeToUtc(DateTime, TimeZoneInfo) 方法的物件,來解決此問題。

下列範例說明美國太平洋時區 Windows XP 系統上的 和 ConvertTimeToUtc(DateTime, TimeZoneInfo) 方法之間的差異 ToUniversalTime() 。 前兩個方法呼叫會套用目前時區調整規則 (在 2007 年) 生效至 2006 年日期。 目前的調整規則提供轉換至 3 月第二個星期日的日光節約時間;先前的規則在 2006 年生效,提供在 4 月的第一個星期日轉換到日光節約時間。 只有第三個方法呼叫會正確執行此歷程記錄日期和時間轉換。

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

適用於

另請參閱