![](/img/trans.png)
[英]Is it possible to convert short time zone strings as EST CET PST to TimeZoneInfo in C#?
[英]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.