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

时间:2012-01-14 12:54:37

标签: c# timezone

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

现在我的机器01/14/2012 05:52PM我想将其转换为PST时区,如

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

反之亦然PST到GMT

4 个答案:

答案 0 :(得分:18)

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

DateTime newDateTime = TimeZoneInfo.ConvertTime(existingDateTime, timeZoneInfo);

您可以看到可用时区的完整图表here

另请查看Converting Between Any Two Time Zones

答案 1 :(得分:1)

TimeZoneInfo.FindSystemTimeZoneById("Pacific SA Standard Time");

如果我们在Linux(如果是.NET Core)中部署应用程序,将会失败,找到了一个不错的库,它将在Windows和Linux“ TimeZoneConverter”中提供正确的TimeZoneInfo,使用它我们可以像这样转换

using TimeZoneConverter;

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

答案 2 :(得分:0)

受到@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;
    }

答案 3 :(得分:-2)

以下代码转换为PST。

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