TimeZoneInfo.ConvertTimeBySystemTimeZoneId 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
根据时区标识符将时间转换为另一时区中的时间。
重载
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
目标时区的标识符。
返回
目标时区的日期和时间。
例外
destinationTimeZoneId
为 null
。
时区标识符已找到,但注册表数据已损坏。
该进程没有读取包含时区信息的注册表项所需的权限。
在本地系统上找不到 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 属性值 |
---|---|
destinationTimeZone 为 TimeZoneInfo.Utc.Id 。 |
DateTimeKind.Utc |
任何其他 destinationTimeZone 值。 |
DateTimeKind.Unspecified |
如果 参数的 dateTime
值为不明确的本地时间,则会将其解释为标准时间。
dateTime
如果 参数是无效的本地时间,则此方法将ArgumentException引发 。
如果 的 dateTime
转换导致日期和时间值早于 DateTime.MinValue 或晚于 DateTime.MaxValue,则此方法分别返回 DateTime.MinValue 或 DateTime.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
目标时区的标识符。
返回
目标时区的日期和时间。
例外
destinationTimeZoneId
为 null
。
时区标识符已找到,但注册表数据已损坏。
该进程没有读取包含时区信息的注册表项所需的权限。
在本地系统上找不到 destinationTimeZoneId
标识符。
注解
执行转换时, ConvertTimeBySystemTimeZoneId 方法会应用时区中 destinationTimeZoneId
生效的任何调整规则。
此重载与调用 ConvertTime(DateTimeOffset, TimeZoneInfo) 方法相同,只不过它允许按其标识符(而不是对象引用)指定目标时区。 当必须转换某个时间而不检索与之对应的时区对象,并且不需要知道转换的时间是标准时间还是夏令时,此方法最有用。
dateTimeOffset
由于 参数表示日期和时间以及该时间与协调世界时 (UTC) 的偏移量,因此它不能表示不明确的时间或无效的时间。
此方法从 Windows 系统上的注册表以及 Linux 和 macOS 上的 ICU 库检索其标识符由 destinationTimeZoneId
参数指定的时区。 它无法检索使用 CreateCustomTimeZone 方法创建的时区对象。 参数 destinationTimeZoneId
的长度必须与时区的标识符完全对应,但不能完全对应,这样才能成功匹配;也就是说,与时区标识符的比较 destinationTimeZoneId
不区分大小写。
在将 dateTimeOffset
值转换为目标时区中的时间时,该方法考虑了目标时区中生效的任何调整规则。
如果 的 dateTimeOffset
转换导致日期和时间值早于 DateTimeOffset.MinValue 或晚于 DateTimeOffset.MaxValue,则此方法分别返回 DateTimeOffset.MinValue 或 DateTimeOffset.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
参数对应的日期和时间。
例外
已找到时区标识符,但注册表数据已损坏。
用户没有读取包含时区数据的注册表项所需的权限。
在本地系统上找不到 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 库检索其标识符为 sourceTimeZoneId
和 destinationTimeZoneId
参数的时区。 它无法检索使用 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 执行不区分大小写的搜索来查找对应于 sourceTimeZoneId
和 destinationTimeZoneId
的时区。
如果 参数的值 dateTime
是源时区中的不明确时间,则将其解释为标准时间。
dateTime
如果 参数是源时区中的无效时间,则此方法将ArgumentException引发 。
Kind返回DateTime的值的 属性设置为 ,DateTimeKind.Unspecified除非目标时区是协调世界时 (UTC) ,在这种情况下,它设置为 DateTimeKind.Utc。