TimeZoneInfo.ConvertTimeBySystemTimeZoneId 方法

定义

根据时区标识符将时间转换为另一时区中的时间。

重载

ConvertTimeBySystemTimeZoneId(DateTime, String)

根据时区标识符将时间转换为另一时区中的时间。

ConvertTimeBySystemTimeZoneId(DateTimeOffset, String)

根据时区标识符将时间转换为另一时区中的时间。

ConvertTimeBySystemTimeZoneId(DateTime, String, String)

根据时区标识符将时间从一个时区转换到另一个时区。

ConvertTimeBySystemTimeZoneId(DateTime, String)

Source:
TimeZoneInfo.cs
Source:
TimeZoneInfo.cs
Source:
TimeZoneInfo.cs

根据时区标识符将时间转换为另一时区中的时间。

public:
 static DateTime ConvertTimeBySystemTimeZoneId(DateTime dateTime, System::String ^ destinationTimeZoneId);
public static DateTime ConvertTimeBySystemTimeZoneId (DateTime dateTime, string destinationTimeZoneId);
static member ConvertTimeBySystemTimeZoneId : DateTime * string -> DateTime
Public Shared Function ConvertTimeBySystemTimeZoneId (dateTime As DateTime, destinationTimeZoneId As String) As DateTime

参数

dateTime
DateTime

要转换的日期和时间。

destinationTimeZoneId
String

目标时区的标识符。

返回

目标时区的日期和时间。

例外

destinationTimeZoneIdnull

时区标识符已找到,但注册表数据已损坏。

该进程没有读取包含时区信息的注册表项所需的权限。

在本地系统上找不到 destinationTimeZoneId 标识符。

注解

执行转换时, ConvertTimeBySystemTimeZoneId 方法会应用时区中 destinationTimeZoneId 生效的任何调整规则。

此重载与调用 ConvertTime(DateTime, TimeZoneInfo) 方法大致相同,只不过它允许按其标识符(而不是对象引用)指定目标时区。 当必须转换某个时间而不检索与之对应的时区对象,并且不需要知道转换的时间是标准时间还是夏令时,此方法最有用。

方法ConvertTimeBySystemTimeZoneId(DateTime, String)根据参数Kind的 属性的值dateTime确定源时区,如下表所示。

Kind 属性值 源时区 方法行为
DateTimeKind.Local Local 将本地时间转换为 中的 destinationTimeZone时间。
DateTimeKind.Utc Utc 将协调世界时 (UTC) 转换为 中的 destinationTimeZone时间。
DateTimeKind.Unspecified 假定为 Local 将本地时间转换为 中的 destinationTimeZone时间。

Kind 设置返回 DateTime 值的 属性,如下表所示。

条件 返回的 Kind 属性值
destinationTimeZoneTimeZoneInfo.Utc.Id DateTimeKind.Utc
任何其他 destinationTimeZone 值。 DateTimeKind.Unspecified

如果 参数的 dateTime 值为不明确的本地时间,则会将其解释为标准时间。 dateTime如果 参数是无效的本地时间,则此方法将ArgumentException引发 。

如果 的 dateTime 转换导致日期和时间值早于 DateTime.MinValue 或晚于 DateTime.MaxValue,则此方法分别返回 DateTime.MinValueDateTime.MaxValue

此方法从 Windows 系统上的注册表以及 Linux 和 macOS 上的 ICU 库检索其标识符由 destinationTimeZoneId 参数指定的时区的信息。 它无法检索使用 CreateCustomTimeZone 方法创建的时区对象。 参数 destinationTimeZoneId 的长度必须与时区的标识符完全对应,但不能完全对应,这样才能成功匹配;也就是说,与时区标识符的比较 destinationTimeZoneId 不区分大小写。

另请参阅

适用于

ConvertTimeBySystemTimeZoneId(DateTimeOffset, String)

Source:
TimeZoneInfo.cs
Source:
TimeZoneInfo.cs
Source:
TimeZoneInfo.cs

根据时区标识符将时间转换为另一时区中的时间。

public:
 static DateTimeOffset ConvertTimeBySystemTimeZoneId(DateTimeOffset dateTimeOffset, System::String ^ destinationTimeZoneId);
public static DateTimeOffset ConvertTimeBySystemTimeZoneId (DateTimeOffset dateTimeOffset, string destinationTimeZoneId);
static member ConvertTimeBySystemTimeZoneId : DateTimeOffset * string -> DateTimeOffset
Public Shared Function ConvertTimeBySystemTimeZoneId (dateTimeOffset As DateTimeOffset, destinationTimeZoneId As String) As DateTimeOffset

参数

dateTimeOffset
DateTimeOffset

要转换的日期和时间。

destinationTimeZoneId
String

目标时区的标识符。

返回

目标时区的日期和时间。

例外

destinationTimeZoneIdnull

时区标识符已找到,但注册表数据已损坏。

该进程没有读取包含时区信息的注册表项所需的权限。

在本地系统上找不到 destinationTimeZoneId 标识符。

注解

执行转换时, ConvertTimeBySystemTimeZoneId 方法会应用时区中 destinationTimeZoneId 生效的任何调整规则。

此重载与调用 ConvertTime(DateTimeOffset, TimeZoneInfo) 方法相同,只不过它允许按其标识符(而不是对象引用)指定目标时区。 当必须转换某个时间而不检索与之对应的时区对象,并且不需要知道转换的时间是标准时间还是夏令时,此方法最有用。

dateTimeOffset由于 参数表示日期和时间以及该时间与协调世界时 (UTC) 的偏移量,因此它不能表示不明确的时间或无效的时间。

此方法从 Windows 系统上的注册表以及 Linux 和 macOS 上的 ICU 库检索其标识符由 destinationTimeZoneId 参数指定的时区。 它无法检索使用 CreateCustomTimeZone 方法创建的时区对象。 参数 destinationTimeZoneId 的长度必须与时区的标识符完全对应,但不能完全对应,这样才能成功匹配;也就是说,与时区标识符的比较 destinationTimeZoneId 不区分大小写。

在将 dateTimeOffset 值转换为目标时区中的时间时,该方法考虑了目标时区中生效的任何调整规则。

如果 的 dateTimeOffset 转换导致日期和时间值早于 DateTimeOffset.MinValue 或晚于 DateTimeOffset.MaxValue,则此方法分别返回 DateTimeOffset.MinValueDateTimeOffset.MaxValue

另请参阅

适用于

ConvertTimeBySystemTimeZoneId(DateTime, String, String)

Source:
TimeZoneInfo.cs
Source:
TimeZoneInfo.cs
Source:
TimeZoneInfo.cs

根据时区标识符将时间从一个时区转换到另一个时区。

public:
 static DateTime ConvertTimeBySystemTimeZoneId(DateTime dateTime, System::String ^ sourceTimeZoneId, System::String ^ destinationTimeZoneId);
public static DateTime ConvertTimeBySystemTimeZoneId (DateTime dateTime, string sourceTimeZoneId, string destinationTimeZoneId);
static member ConvertTimeBySystemTimeZoneId : DateTime * string * string -> DateTime
Public Shared Function ConvertTimeBySystemTimeZoneId (dateTime As DateTime, sourceTimeZoneId As String, destinationTimeZoneId As String) As DateTime

参数

dateTime
DateTime

要转换的日期和时间。

sourceTimeZoneId
String

源时区的标识符。

destinationTimeZoneId
String

目标时区的标识符。

返回

目标时区中与源时区中的 dateTime 参数对应的日期和时间。

例外

dateTime 参数的 Kind 属性与源时区不对应。

- 或 -

dateTime 是源时区中的无效时间。

sourceTimeZoneIdnull

destinationTimeZoneIdnull

已找到时区标识符,但注册表数据已损坏。

用户没有读取包含时区数据的注册表项所需的权限。

在本地系统上找不到 sourceTimeZoneId 标识符。

- 或 -

在本地系统上找不到 destinationTimeZoneId 标识符。

示例

以下示例使用 TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime, String, String) 方法显示对应于世界八个城市的本地系统时间的时间。

DateTime currentTime = DateTime.Now;
Console.WriteLine("Current Times:");
Console.WriteLine();
Console.WriteLine("Los Angeles: {0}", 
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Pacific Standard Time"));
Console.WriteLine("Chicago: {0}", 
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Central Standard Time"));
Console.WriteLine("New York: {0}", 
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Eastern Standard Time"));
Console.WriteLine("London: {0}", 
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "GMT Standard Time"));
Console.WriteLine("Moscow: {0}", 
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Russian Standard Time"));
Console.WriteLine("New Delhi: {0}", 
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "India Standard Time"));
Console.WriteLine("Beijing: {0}", 
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "China Standard Time"));
Console.WriteLine("Tokyo: {0}", 
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Tokyo Standard Time"));
let currentTime = DateTime.Now
printfn "Current Times:\n"
printfn $"""Los Angeles: {TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Pacific Standard Time")}"""
printfn $"""Chicago: {TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Central Standard Time")}"""
printfn $"""New York: {TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Eastern Standard Time")}"""
printfn $"""London: {TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "GMT Standard Time")}"""
printfn $"""Moscow: {TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Russian Standard Time")}"""
printfn $"""New Delhi: {TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "India Standard Time")}"""
printfn $"""Beijing: {TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "China Standard Time")}"""
printfn $"""Tokyo: {TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Tokyo Standard Time")}"""
Dim currentTime As Date = Date.Now
Console.WriteLine("Current Times:")
Console.WriteLine()
Console.WriteLine("Los Angeles: {0}", _
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Pacific Standard Time"))
Console.WriteLine("Chicago: {0}", _ 
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Central Standard Time"))
Console.WriteLine("New York: {0}", _
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Eastern Standard Time"))
Console.WriteLine("London: {0}", _
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "GMT Standard Time"))
Console.WriteLine("Moscow: {0}", _
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Russian Standard Time"))
Console.WriteLine("New Delhi: {0}", _
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "India Standard Time"))
Console.WriteLine("Beijing: {0}", _
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "China Standard Time"))
Console.WriteLine("Tokyo: {0}", _
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Tokyo Standard Time"))

注解

执行转换时, ConvertTimeBySystemTimeZoneId 方法会应用时区中 destinationTimeZoneId 生效的任何调整规则。

尽管它与 TimeZoneInfo.ConvertTime(DateTime, TimeZoneInfo, TimeZoneInfo) 方法类似,但可以使用 TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime, String, String) 其标识符(而不是 TimeZoneInfo 对象)来指定源时区和目标时区。 当必须转换某个时间而不检索与之对应的时区对象,并且不需要知道转换的时间是标准时间还是夏令时,此方法最有用。

此方法从 Windows 系统上的注册表以及 Linux 和 macOS 上的 ICU 库检索其标识符为 sourceTimeZoneIddestinationTimeZoneId 参数的时区。 它无法检索使用 CreateCustomTimeZone 方法创建的时区对象。

参数的 KinddateTime 属性值必须与 参数相对应 sourceTimeZoneId ,如下表所示。

DateTime.Kind 值 sourceTimeZone 值 方法行为
DateTimeKind.Utc 等于 TimeZoneInfo.Utc.Id 转换为 dateTime 目标时区的时间。
DateTimeKind.Utc Does not equal TimeZoneInfo.Utc.Id 引发 ArgumentException
DateTimeKind.Local 等于 TimeZoneInfo.Local.Id 转换为 dateTime 目标时区的时间。
DateTimeKind.Local Does not equal TimeZoneInfo.Local.Id 引发 ArgumentException
DateTimeKind.Unspecified 任何。 转换为 dateTime 目标时区的时间。

由于该方法依赖于对 FindSystemTimeZoneById 方法的调用,因此该方法 ConvertTimeBySystemTimeZoneId 执行不区分大小写的搜索来查找对应于 sourceTimeZoneIddestinationTimeZoneId的时区。

如果 参数的值 dateTime 是源时区中的不明确时间,则将其解释为标准时间。 dateTime如果 参数是源时区中的无效时间,则此方法将ArgumentException引发 。

Kind返回DateTime的值的 属性设置为 ,DateTimeKind.Unspecified除非目标时区是协调世界时 (UTC) ,在这种情况下,它设置为 DateTimeKind.Utc

另请参阅

适用于