System.TimeZoneInfo.ConvertTimeToUtc 方法 (DateTime)

方法描述

将当前日期和时间转换为协调世界时 (UTC)。

语法定义(C# System.TimeZoneInfo.ConvertTimeToUtc 方法 (DateTime) 的用法)

public static DateTime ConvertTimeToUtc(
	DateTime dateTime
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
dateTime System-DateTime 要转换的日期和时间。
返回值 System.DateTime 与 dateTime 参数对应的协调世界时 (UTC)。 DateTime 值的 Kind 属性始终设置为 DateTimeKind.Utc。

提示和注释

所执行的确切转换取决于 dateTime 参数的 Kind 属性值,如下表所示。

DateTime.Kind 属性

转换

DateTimeKind.Local

从本地时间转换为协调世界时 (UTC)。

DateTimeKind.Unspecified

假定 dateTime 为本地时间并将其从本地时间转换为 UTC。

DateTimeKind.Utc

返回未更改的 dateTime。

如果 dateTime 对应于不明确的本地时间,此方法将假定其为标准本地时间。 如果 dateTime 对应于无效的本地时间,此方法将引发 ArgumentException。

注意

如果当前计算机的本地时区包括多个调整规则,则此 ConvertTimeToUtc 方法重载返回的结果可能与 TimeZone.ToUniversalTime 和 DateTime.ToUniversalTime 方法返回的结果不同

如果等于 dateTime 的 UTC 早于 DateTime.MinValue 或晚于 DateTime.MaxValue,则此方法分别返回 MinValue 或 MaxValue。

对调用者的说明

在 Windows XP 系统中,该方法只将当前调整规则应用于时区转换。 因此,该方法在当前调整规则生效之前可能无法准确转换时间段。更多信息,请参见 Local 属性中的调用节说明。

System.TimeZoneInfo.ConvertTimeToUtc 方法 (DateTime)例子

该示例还阐释不明确的时间和无效时间的转换。

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(2006, 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
//

异常

异常 异常描述
ArgumentException TimeZoneInfo.Local.IsInvalidDateTime( dateTime ) 返回 true。

命名空间

namespace: System

程序集: mscorlib(在 mscorlib.dll 中)

版本信息

.NET Framework 受以下版本支持:4、3.5 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。