分钟在减法上给出错误的值

时间:2016-09-26 12:51:24

标签: c# asp.net asp.net-mvc linq

我想减去分钟数并获得差异。下面是我的代码

 double diff = currBlock.EndTime.Subtract(currBlock.StartTime).TotalMinutes;

在给定代码中(currBlock.StartTime = 23:30:00)和(currBlock.EndTime = 00:20:00) 这里的开始时间是今天的时间即(09/26/2016 23:30:00),晚上的时间将被视为晚上11:30,结束时间是明天的时间即(09/27/2016 00:20:00) ,早上的时间将被视为12:20 Am。在我的代码中,我得到的值为-1390,这是不正确的。所以请帮我解决这个问题。

这里我附上数据图片以供进一步参考。 enter image description here

2 个答案:

答案 0 :(得分:2)

  

请正确解释我,我该如何使用它?它只是一个不同班次的时间段,所以没有日期包括在内

包含日期。你告诉我们EndTime就像09/27/2016 00:20:00,而StartTime就像09/26/2016 23:30:00。问题在于,知识在你脑海中而不在你的代码中。如果你将这些值减去TimeSpan s,那么你真的会说:30分钟减去23小时30分钟。答案当然是-23小时。要获得真正的差异,您必须包含日期,这意味着对DateTimeDateTimeOffset使用StartTimeEndTime类型,你可以编码整个日期和时间。然后,当你进行减法时,它将返回正确的值。

答案 1 :(得分:-1)

以下代码适用于我。感谢朋友们的支持和帮助。

string strCurrDate = (DateTime.Now.Date + currBlock.EndTime).ToString();
                        DateTime dtYourDate = DateTime.Parse((DateTime.Now.AddDays(-1).Date + currBlock.StartTime).ToString());
                        string strYourDate = dtYourDate.ToShortDateString() + " " + dtYourDate.ToLongTimeString();
                        string strTotalMinsElapsed = TotalMinutesElapsed(dtYourDate).ToString();



 private long TotalMinutesElapsed(DateTime dtYourDate)
        {
            long lTotalMinutesElapsed = 0;

            //Find Current Date and Time
            DateTime dtCurrent = DateTime.Now;

            //Find Time Difference details between current date and your given date
            TimeSpan tsDiff = dtCurrent.Subtract(dtYourDate);

            //Add Total Minutes for Days difference
            lTotalMinutesElapsed = lTotalMinutesElapsed + tsDiff.Days * (24 * 60);

            //Add Total Minutes for Hour difference
            lTotalMinutesElapsed = lTotalMinutesElapsed + tsDiff.Hours * 60;

            //Add Minutes 
            lTotalMinutesElapsed = lTotalMinutesElapsed + tsDiff.Minutes;

            return lTotalMinutesElapsed;
        }