2013-10-26 57 views
1

我试图只显示在24小时前或更少时间添加到我的数据库的数据。但是,出于某种原因,我编写的代码无法正常工作,并且我的数据库中的两个条目(一个小时前的一个,两天前的一个)显示出来。我的方程有什么问题吗?谢谢!按日期排序的问题

public void UpdateValues() 
    { 
     double TotalCost = 0; 
     double TotalEarned = 0; 
     double TotalProfit = 0; 
     double TotalHST = 0; 
     for (int i = 0; i <= Program.TransactionList.Count - 1; i++) 
     { 
      DateTime Today = DateTime.Now; 
      DateTime Jan2013 = DateTime.Parse("01-01-2013"); //Hours since Jan12013 
      int TodayHoursSince2013 = Convert.ToInt32(Math.Round(Today.Subtract(Jan2013).TotalHours)); //7 
      int ItemHoursSince2013 = Program.TransactionList[i].HoursSince2013; //Equals 7176, and 7130 

      if (ItemHoursSince2013 - TodayHoursSince2013 <= 24) 
      { 
       TotalCost += Program.TransactionList[i].TotalCost; 
       TotalEarned += Program.TransactionList[i].TotalEarned; 
       TotalProfit += Program.TransactionList[i].TotalEarned - Program.TransactionList[i].TotalCost; 
       TotalHST += Program.TransactionList[i].TotalHST; 
      } 
     } 
     label6.Text = "$" + String.Format("{0:0.00}", TotalCost); 
     label7.Text = "$" + String.Format("{0:0.00}", TotalEarned); 
     label8.Text = "$" + String.Format("{0:0.00}", TotalProfit); 
     label10.Text = "$" + String.Format("{0:0.00}", TotalHST); 
    } 
+0

你的数据库中的数据时间值是在Program.TransactionList?...比如Program.TransactionList [i] .mydatetime例如? – terrybozzio

+0

'Program.TransactionList [i] .HoursSince2013' is added like like: '... HoursSince2013 = Convert.ToInt32(Math.Round(TimeSince2013.TotalHours)),...' – Nathan

+0

为什么你不只是储存数据库中真正的DateTime?会更容易 – Florian

回答

2

将它放在里面的循环(DateTime变量现在把它放在外面):

DateTime now = DateTime.Now; 
DateTime TransactionListDate = Program.TransactionList[i].HoursSince2013; 
if (TransactionListDate > now.AddHours(-24) && TransactionListDate <= now) 
{ 
    //it falls between now and last 24 hours.... 
} 

我觉得这是你need.I承担Program.TransactionList [I] .HoursSince2013是约会时间。