首页 >后端开发 >C++ >如何在不使用本地或UTC的情况下在特定时区(例如PST)中创建DateTime对象?

如何在不使用本地或UTC的情况下在特定时区(例如PST)中创建DateTime对象?

Barbara Streisand
Barbara Streisand原创
2025-01-26 04:16:14171浏览

How to Create a DateTime Object in a Specific Time Zone (e.g., PST) in C# Without Using Local or UTC?

在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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn