我在这里需要做的很简单,但由于某种原因,我只是在这上面写了一个空白,需要对如何正确地做到这一点有所保证。
我试图确定明天上午5点太平洋时间的UTC等值。我试图这样做而不依赖服务器时间,因为我无法知道这是什么时区。
我只需要对以下内容进行健全性检查。这是最好的方法吗?我是否会遇到关闭服务器时间的问题?这是否会让我准确地代表明天上午5点的UTC?
DateTime datetime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.AddDays(1).Day, 5, 0, 0); //5AM tomorrow
TimeZoneInfo pstZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
DateTime pstTime = TimeZoneInfo.ConvertTimeToUtc(datetime, pstZone);
TIA
答案 0 :(得分:1)
您的代码实际上缺少一些细节。基本上,方法是:
代码:
static void Main(string[] args)
{
var utcNow = DateTime.UtcNow;
TimeZoneInfo pstZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
var pstNow = TimeZoneInfo.ConvertTimeFromUtc(utcNow, pstZone);
DateTime targetPstTime = pstNow.Date.AddDays(1).AddHours(5);
DateTime utcAnswer = TimeZoneInfo.ConvertTimeToUtc(targetPstTime, pstZone);
Console.WriteLine(utcAnswer);
Console.ReadKey();
}