2012-08-01 30 views
2

在我的簡單應用程序中,我使用new Timestamp(System.currentTimeMillis())以編程方式將時間戳存儲到數據庫表中。如何使用Java找出第二天的開始

現在,我有一個條件,我必須存儲特定日期的onClick計數,並且所有onClick都計入兩個不同的列。

因此,我需要找出今天的onClicks。那麼我怎麼才能知道時間點擊是否發生在今天?我的意思是說,8月1日,我希望所有onclick計數在一列,所有以前的onClick計入另一列。

* 簡言之 - 將點擊次數存儲在一列中,並將點擊次數存儲在另一列中,因此如果今天過期,我想爲總共點擊次數添加點擊次數,然後使today_clicks列數爲0然後當第二天有新的點擊時,將其存儲在today_clicks列中,並以count開頭1 *

我該如何判斷?我應該使用哪個Java類?

+0

你的問題有點模棱兩可(至少對我而言)。我已經厭倦了我最好的解密方式,我只希望它有幫助 – MadProgrammer 2012-08-01 04:37:04

+0

對不起,如果我無法正確地說出來,我的意思是將點擊次數存儲在一列中,並將點擊次數存儲到另一列中,所以如果今天到期時,我想爲總共點擊次數添加今天的點擊次數,然後當第二天有新的點擊次數時,將它存儲在列中並以count開頭。 – AnujKu 2012-08-01 04:43:16

回答

0

如果我理解正確的,你在你的數據庫中尋找一種方式,以最好的存儲你的數據。您已決定保留「今日點擊」列和「即時點擊」列。 (我可能是基於此,但它不完全清楚的問題)

我建議你不要試圖操縱從列到列的數據,因爲你已經描述過,而是通過保持點擊次數來做到這一點每天:

 
date | count 
------|------- 
Jul 31| 10876 
Aug 1| 15721 

(其中date是在db時間戳/日期數據類型)

如何將這項工作?

在啓動時,您可以將所有行都記入內存,並計算它們的計數值,以便在需要時獲取點擊時間值。

然後,您可以對今天的行進行特殊處理,在此處使用clicks-for-today值更新適當的上下文。

要確定您是否已經通過了一天的閾值,你可以簡單地說:

  1. 維持「今天的日曆實例(稱之爲todayCal
  2. 產生新的日曆每次錄製單擊從todayCalclickCal
  3. (稱之爲clickCal
  4. 測試Calendar.DAY_OF_YEAR如果你確定每天滾,你堅持下去的點擊換今天的DB和初始化的新點擊換今天。
  5. 如果您在內存中保持總點擊次數,則可以在此處進行數學計算。
+0

我不確定我的應用程序設計將允許那麼如何將最後一次點擊的日期/時間存儲起來,以及何時發生下一次點擊(比如說第二天的24小時之後),將它與最後一次點擊的日期/時間進行比較,以確定它是否是今天,以便將今天的點擊存入today_click列並在此之前移動count_total_click = today_click + total_clicks並使today_click = 0; – AnujKu 2012-08-01 05:43:14

3

不知道這是你之後。爲了讓第二天開始就可以使用Calendar

public static Date nextDayStart(Date date) { 
    Calendar cal = Calendar.getInstance(); 
    cal.setTime(date); 
    cal.set(Calendar.HOUR_OF_DAY, 0); 
    cal.set(Calendar.MINUTE, 0); 
    cal.set(Calendar.SECOND, 0); 
    cal.set(Calendar.MILLISECOND, 0); 
    cal.add(Calendar.DATE, 1); 

    return cal.getTime(); 
} 

要獲得明天:

Date tomorrow = nextDayStart(new Date()); 

Date獲得Timestamp

Timestamp s = new Timestamp(date.getTime()); 
+0

感謝您的回覆,但我不確定您在這裏的含義。我不打算在第二天,也許你可以再次閱讀這個問題,我已經突出了我的要求 – AnujKu 2012-08-01 05:36:23

0

首先,我建議採取看看Joda Time

其次,我想看看Calendar

Calendar lower = Calendar.getInstance(); 
lower.setTime(new Date()); 
lower.set(Calendar.HOUR_OF_DAY, 0); 
lower.set(Calendar.MINUTE, 0); 
lower.set(Calendar.SECOND, 0); 
lower.set(Calendar.MILLISECOND, 0); 

Calendar upper = Calendar.getInstance(); 
upper.setTime(new Date()); 
upper.set(Calendar.HOUR_OF_DAY, 23); 
upper.set(Calendar.MINUTE, 59); 
upper.set(Calendar.SECOND, 59); 
upper.set(Calendar.MILLISECOND, 99); 

Date clickTime = new Date(timeInMillis); 
if (clickTime.after(lower.getTime()) && clickTime.before(upper.getTime())) { 
    // Is today 
} 
+0

彙編err在較低和較高的 – AnujKu 2012-08-01 04:48:57

+0

@AndyKu對不起,從內存打字:P – MadProgrammer 2012-08-01 04:51:20