2012-08-01 64 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