以天计算两个日期之间的差异

时间:2017-01-12 20:21:22

标签: asp.net asp.net-mvc linq date difference

我有一个特定的问题,我在我的数据库表中有如下记录:

LastUpdated

10 January 2017

(日期作为DateTime类型存储在数据库中。)

现在我需要在今天的日期和最后一个之间的天数中获取差异,包括今天的日期。因此,例如,今天是第12天,因此天数将是2。

现在问题的第二部分是我有另外一个表设置,如下所示:

TransactionDate

1 January 2017
2 January 2017
3 January 2017
4 January 2017
5 January 2017
6 January 2017
7 January 2017
8 January 2017
9 January 2017
10 January 2017

所以现在执行LINQ后,我的DBTable中的更新结果如下所示:

3 January 2017
4 January 2017
5 January 2017
6 January 2017
7 January 2017
8 January 2017
9 January 2017
10 January 2017
11 January 2017
12 January 2017

所以基本上我正在尝试获取当前日期和上次更新日期之间的差异,然后将其添加到事务详细信息表中。在添加两个日期之间的差异后,我想删除差异的天数,以便总日期跨度保持10天......

有人可以帮我解决这个问题吗?

编辑:这是到目前为止的代码:

 var usr = ctx.SearchedUsers.FirstOrDefault(x => x.EbayUsername == username);
 var TotalDays = (DateTime.Now - usr.LastUpdatedAt).Value.TotalDays;

这是一种正确的方法来获取两个日期之间的区别,就像我上面提到的那样吗?

在此之后,我执行HTTP请求,在那里我获得剩余的两个日期并插入它:

ctx.TransactionDetails.Add(RemainingTwoDates);
ctx.SaveChanges();

现在我的日期从1月1日延长到1月12日,但我想删除1月1日和2日,以便总的天数保持10天;

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以删除超过10天前的交易日期。

ctx.TransactionDetails.Add(RemainingTwoDays);

//Now you want to remove those older than 10 days
var today = DateTime.Today;
var tenDaysAgo = today.AddDays(-10);
var oldTrandactions = ctx.TransactionDetails.Where(t => t.TransactionDate <= tenDaysAgo).ToList();

foreach (var t in oldTrandactions) {
    ctx.TransactionDetails.Remove(t);
}

ctx.SaveChanges();