首页 >后端开发 >C++ >如何在 C# 中创建具有特定时区的日期时间?

如何在 C# 中创建具有特定时区的日期时间?

Susan Sarandon
Susan Sarandon原创
2025-01-26 04:31:08294浏览

How Can I Create DateTimes with Specific Time Zones in C#?

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

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