获取UTC等效的静态DateTime

时间:2018-01-16 19:21:29

标签: c#

我在这里需要做的很简单,但由于某种原因,我只是在这上面写了一个空白,需要对如何正确地做到这一点有所保证。

我试图确定明天上午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

1 个答案:

答案 0 :(得分:1)

您的代码实际上缺少一些细节。基本上,方法是:

  1. 现在使用UTC
  2. 将其转换为pst。
  3. 今天"
  4. 添加一天以获得"明天"
  5. 加5小时到凌晨5点。
  6. 转换回UTC
  7. 代码:

    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();
    
     }