我现在说系统中的时区是+ 5GMT
现在我的机器01/14/2012 05:52PM
我想将其转换为PST时区,如
1/14/12 4:52:50 AM PST
反之亦然PST到GMT
答案 0 :(得分:18)
TimeZoneInfo timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Pacific SA Standard Time");
DateTime newDateTime = TimeZoneInfo.ConvertTime(existingDateTime, timeZoneInfo);
您可以看到可用时区的完整图表here
答案 1 :(得分:1)
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);
答案 2 :(得分:0)
受到@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;
}
答案 3 :(得分:-2)
以下代码转换为PST。
TimeZoneInfo timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");