2013-10-26 58 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是約會時間。