在C#中创建特定时区的DateTime对象
在进行涉及时区更改的单元测试时,必须能够在特定的非本地时区中创建DateTime对象。
问题:
如何在不依赖本地时区或UTC时区的情况下,创建具有特定时区(如PST)的DateTime对象?
答案:
DateTime构造函数仅允许使用本地时区、UTC时区或未指定选项。因此,我们可以使用TimeZoneInfo。
解决方案:
为了能够创建具有特定时区(例如PST)的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>
此结构允许您创建具有特定时区的DateTime对象,并访问其UTC时间和本地时间。 使用表达式体属性简化了代码。
以上是如何在不使用本地或UTC的情况下在特定时区(例如PST)中创建DateTime对象?的详细内容。更多信息请关注PHP中文网其他相关文章!