DateTime.ToUniversalTime 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
將目前 DateTime 物件的值轉換成國際標準時間 (UTC)。
public:
DateTime ToUniversalTime();
public DateTime ToUniversalTime ();
member this.ToUniversalTime : unit -> DateTime
Public Function ToUniversalTime () As DateTime
傳回
物件,其 Kind 屬性為 Utc,而其值為與目前 DateTime 物件的值相等的 UTC 時間;如果轉換過的值太大,而無法由 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.
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 方法來示範 Kind 屬性如何影響 ToLocalTime 和 ToUniversalTime 轉換方法。
// 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 物件假設為本地時間,而轉換的執行方式就像 Kind 是一樣 Local 。 |
注意
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) 。
下列範例說明在 ToUniversalTime() ConvertTimeToUtc(DateTime, TimeZoneInfo) 美國太平洋時區 Windows XP 系統上的和方法之間的差異。 前兩個方法呼叫會套用目前的時區調整規則 (在 2007) 至2006中的日期生效。 目前的調整規則可讓您在三月的第二個星期日轉換為日光節約時間。先前在2006中生效的規則,是為了轉換至日光節約時間,而發生在四月的第一個星期日。 只有第三個方法呼叫會精確地執行此歷程記錄日期和時間轉換。
::: code language = "csharp" source = "~/samples/snippets/csharp/VS_Snippets_CLR_System/system.datetime.touniversaltime/cs/touniversaltime.cs" id = "Snippet1":::::: code language = "vb" source = "~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.datetime.touniversaltime/vb/touniversaltime.vb" id = "Snippet1":::