繁体   English   中英

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

[英]Convert Local Time Zone to PST Time Zone in C#

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

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

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

反之亦然 PST 到 GMT

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“TimeZoneConverter”中提供正确的 TimeZoneInfo,使用它我们可以像这样进行转换

using TimeZoneConverter;

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

下面的代码转换为 PST。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM