溫馨提示×

c#能否自定義時(shí)區(qū)規(guī)則

c#
小樊
83
2024-09-16 06:42:02
欄目: 編程語言

是的,C# 可以自定義時(shí)區(qū)規(guī)則。您可以使用 TimeZoneInfo 類創(chuàng)建自定義時(shí)區(qū),并為其指定規(guī)則,例如夏令時(shí)調(diào)整。

以下是一個(gè)示例,展示了如何創(chuàng)建一個(gè)自定義時(shí)區(qū),該時(shí)區(qū)比 UTC 時(shí)間慢 120 分鐘,并在 3 月的第二個(gè)星期日開始夏令時(shí),11 月的第一個(gè)星期日結(jié)束夏令時(shí):

using System;

class Program
{
    static void Main()
    {
        // 創(chuàng)建自定義時(shí)區(qū)的規(guī)則
        TimeZoneInfo.AdjustmentRule rule = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(
            DateTime.MinValue, DateTime.MaxValue, TimeSpan.FromHours(1),
            TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 2, 0, 0), 3, 2, DayOfWeek.Sunday),
            TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 2, 0, 0), 11, 1, DayOfWeek.Sunday)
        );

        // 創(chuàng)建自定義時(shí)區(qū)
        TimeZoneInfo customTimeZone = TimeZoneInfo.CreateCustomTimeZone("Custom Time Zone", TimeSpan.FromMinutes(-120), "Custom Time Zone", "Standard Time", "Daylight Time", new[] { rule });

        // 獲取當(dāng)前時(shí)間并轉(zhuǎn)換為自定義時(shí)區(qū)
        DateTime currentTime = TimeZoneInfo.ConvertTime(DateTime.UtcNow, customTimeZone);

        Console.WriteLine($"Current time in the custom time zone: {currentTime}");
    }
}

這個(gè)示例中,我們首先創(chuàng)建了一個(gè)調(diào)整規(guī)則,該規(guī)則指定了夏令時(shí)的開始和結(jié)束時(shí)間。然后,我們使用 TimeZoneInfo.CreateCustomTimeZone 方法創(chuàng)建了一個(gè)自定義時(shí)區(qū),并將調(diào)整規(guī)則傳遞給它。最后,我們獲取當(dāng)前的 UTC 時(shí)間,并將其轉(zhuǎn)換為自定義時(shí)區(qū)的時(shí)間。

請注意,這個(gè)示例僅用于演示目的。在實(shí)際應(yīng)用中,您可能需要根據(jù)具體需求調(diào)整時(shí)區(qū)規(guī)則。

0