假设我现在在系统中的时区是+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中提供正确的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");