【问题标题】:How to subtract 2 UTC dates in C#如何在 C# 中减去 2 个 UTC 日期
【发布时间】:2025-12-24 01:55:11
【问题描述】:

在我的网站中,我使用 date 数据类型在 sql server 中存储用户访问 DateTime 信息。 为此,我在C# 中使用了UtcNow

 visit_date = System.DateTime.UtcNow

现在,如果同一用户访问我的网站,我想获得小时差异,那么我如何减去 2 个 UTC 日期。我使用以下方法来获取小时差异,但它给出了错误的小时差异。

TimeSpan timeDiff = System.DateTime.UtcNow.Subtract((DateTime)_Last_View.visit_date);

【问题讨论】:

  • 您的代码没有问题,但 visit_date 中的值可能不是您所期望的(假设使用 timeDiff.TotalHours)。

标签: c# datetime utc


【解决方案1】:

尝试在生成的时间跨度上使用 TotalHours 获取小时数,例如:

TimeSpan interval = date2.Subtract(date1);
double Hours = interval.TotalHours;

【讨论】:

  • +1。这是最可能的原因 - TimeSpan.Hours 与 TimeSpan.TotalHours(假设数据正确)。
  • 谢谢...我使用 Hours 属性而不是 TotalHours 。
【解决方案2】:

尝试使用Ticks

double timeDiffTicks = System.DateTime.UtcNow.Ticks - visit_date.Ticks;
double hours = (((timeDiffTicks / 10000)/1000) / 60)/60;

【讨论】:

    【解决方案3】:
    DateTime dt1 = DateTime.UtcNow;
    DateTime dt2 = (DateTime)_Last_View;
    
    TimeSpan ts = dt1.Subtract(dt2);
    
    int seconds = ts.Seconds;
    int minutes = ts.Minutes;
    double hours = ts.TotalHours;
    int days = ts.Days;
    int days = ts.TotalDays;
    int years = (int) (ts.Days / 365.25); // leap years included
    

    查看Calculating Date Difference in C#

    【讨论】:

      【解决方案4】:

      谢谢。

      有效

      TimeSpan timeDiff = System.DateTime.UtcNow.Subtract((DateTime)_Last_View.visit_date);
      
                  if (timeDiff.TotalHours > 24)
                  {
                  }
      

      我使用的是timeDiff.Hours 而不是timeDiff.TotalHours

      【讨论】: