【发布时间】:2012-01-14 12:54:37
【问题描述】:
假设我现在系统中的时区是 +5GMT
现在在我的机器上01/14/2012 05:52PM 我想把它转换成 PST 时区,比如
1/14/12 4:52:50 AM PST
反之亦然 PST 到 GMT
【问题讨论】:
假设我现在系统中的时区是 +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);
您可以查看可用时区的完整图表here
【讨论】:
受@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");
【讨论】: