在 C# 中使用日期时间和时区
许多编程任务,特别是在测试中,需要创建与特定时区相关的DateTime
对象。虽然 DateTime
构造函数可以处理本地、UTC 和未指定的时间,但使用 TimeZoneInfo
可以提供更精确的控制。
利用时区信息
不是仅仅依赖于DateTime
构造函数的TimeZone
属性,TimeZoneInfo
提供了卓越的时区管理和转换功能。
自定义日期时间结构
此示例使用自定义结构 DateTimeWithZone
来封装 DateTime
及其关联的时区:
<code class="language-csharp">public struct DateTimeWithZone { private readonly DateTime utcDateTime; private readonly TimeZoneInfo timeZone; public DateTimeWithZone(DateTime dateTime, TimeZoneInfo timeZone) { var dateTimeUnspec = DateTime.SpecifyKind(dateTime, DateTimeKind.Unspecified); utcDateTime = TimeZoneInfo.ConvertTimeToUtc(dateTimeUnspec, timeZone); this.timeZone = timeZone; } public DateTime UniversalTime => utcDateTime; public TimeZoneInfo TimeZone => timeZone; public DateTime LocalTime => TimeZoneInfo.ConvertTime(utcDateTime, timeZone); }</code>
实际应用
要在太平洋标准时间 (PST) 时区创建 DateTimeWithZone
对象:
<code class="language-csharp">var pstDateTime = new DateTimeWithZone(new DateTime(2023, 1, 1), TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"));</code>
此方法可以与特定时区的 DateTime
对象无缝协作,从而根据需要促进 UTC 和本地时间之间的转换。
以上是如何在 C# 中创建具有特定时区的日期时间?的详细内容。更多信息请关注PHP中文网其他相关文章!