将C#中的本地时区转换为PST时区

本文关键字:时区 转换 PST | 更新日期: 2023-09-27 18:20:21

假设我现在在系统中的时区是+5GMT

现在在我的机器01/14/2012 05:52PM上,我想把它转换成像一样的PST时区

1/14/12 4:52:50 AM PST

反之亦然PST到GMT

将C#中的本地时区转换为PST时区

TimeZoneInfo timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Pacific SA Standard Time");
DateTime newDateTime = TimeZoneInfo.ConvertTime(existingDateTime, timeZoneInfo);

你可以在这里看到可用时区的完整图表

还可以看看在任意两个时区之间转换

受@HarisHasan上述答案的启发,无论代码在哪里运行,以下方法都会产生PST:

    public static DateTime GetPacificStandardTime()
    {
        var utc = DateTime.UtcNow;
        TimeZoneInfo pacificZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
        var pacificTime = TimeZoneInfo.ConvertTimeFromUtc(utc, pacificZone);
        return pacificTime;
    }
TimeZoneInfo.FindSystemTimeZoneById("Pacific SA Standard Time");

如果我们在Linux中部署应用程序(在.NET Core的情况下),就会失败,找到了这个漂亮的库,它将在windows和Linux中提供正确的TimeZoneInfo";TimeZoneConverter";,使用这个我们可以像一样转换

using TimeZoneConverter;
TimeZoneInfo pst =TZConvert.GetTimeZoneInfo("Pacific Standard Time");
DateTime newDateTime = TimeZoneInfo.ConvertTime(existingDateTime, pst);

以下代码转换为PST。

TimeZoneInfo timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");