当我计算2018年7月28日至2018年8月1日之间的持续时间时,其结果为两天。正确答案是四天。我怎么了

时间:2018-08-01 11:09:38

标签: c# duration

当我计算 2018年7月28日 2018年8月1日之间的 持续时间 时,结果是两天。 正确答案是四天。我的错是什么?

我的代码是:

  private static double DateDurationCalculate(DateTime startTime, DateTime endTime)
        {
            TimeSpan span = endTime.Subtract(startTime);
            return span.TotalDays;
        }

startTime是 2018/07/28 11:54 ,而endTime是 2018/08/01 09:28

enter image description here

2 个答案:

答案 0 :(得分:3)

尝试这样

DateTime startTime = DateTime.Parse("2018/07/28 11:54");
DateTime endTime = DateTime.Parse("2018/08/01 09:28");    


private static double DateDurationCalculate(DateTime startTime, DateTime endTime)
{
    startTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, startTime.Hour, startTime.Minute, 0);
    endTime = new DateTime(endTime.Year, endTime.Month, endTime.Day, endTime.Hour, endTime.Minute, 0);
    TimeSpan span = endTime.Date.Subtract(startTime.Date);
    return span.TotalDays;
}

答案 1 :(得分:0)

感谢大家,我的问题已通过以下方法解决。

   private static double DateDurationCalculate(DateTime startTime, DateTime endTime)
        {
            var usCulture = "en-US";
            startTime = DateTime.Parse(startTime.ToString("MM/dd/yyyy"), new CultureInfo(usCulture, true));
            endTime = DateTime.Parse(endTime.ToString("MM/dd/yyyy"), new CultureInfo(usCulture, true));
            TimeSpan span = endTime.Date.Subtract(startTime);
            return span.TotalDays;
        }