Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C语言中将本地时区转换为PST时区#_C#_Timezone - Fatal编程技术网

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

C# 在C语言中将本地时区转换为PST时区#,c#,timezone,C#,Timezone,假设我现在在系统中的时区是+5GMT 现在在我的机器上01/14/2012 05:52 pm我想把它转换成PST时区 1/14/12 4:52:50 AM PST 反之亦然 TimeZoneInfo timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Pacific SA Standard Time"); DateTime newDateTime = TimeZoneInfo.ConvertTime(existingDateTime, ti

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

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

1/14/12 4:52:50 AM PST
反之亦然

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

DateTime newDateTime = TimeZoneInfo.ConvertTime(existingDateTime, timeZoneInfo);
您可以看到可用时区的完整图表


另请看下面的代码转换为PST

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

受@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;
    }
如果我们在Linux中部署应用程序(在.NET Core的情况下),就会失败,找到这个很好的库,它将在windows和Linux中提供正确的TimeZoneInfo“TimeZoneConverter”,使用它我们可以像

using TimeZoneConverter;

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

using TimeZoneConverter;

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