在我的简单应用程序中,我使用new Timestamp(System.currentTimeMillis())
以编程方式将时间戳存储到数据库表中。
现在,我有一个条件,我必须存储特定日期的onClick计数,并且所有onClick计数到两个不同的列。
所以为此,我需要找到今天的onClicks。那么我怎样才能知道今天发生的时间是否发生?我的意思是说8月1日,我希望一列中的所有onclick计数和之前所有的onClick计数到另一列。
* 简单来说 - 将今天的点击存储在一个列中并将点击存储到另一列,所以如果今天到期,我想在今天添加点击总数,然后将today_clicks列计入到0然后当第二天有新的点击时,将其存储在today_clicks列中,方法是将其计数为1 *
我该如何决定?我应该使用哪个Java类?
答案 0 :(得分:4)
不确定那是不是你在追求什么。要开始第二天,您可以使用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());
从Timestamp
获取Date
:
Timestamp s = new Timestamp(date.getTime());
答案 1 :(得分: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
}
答案 2 :(得分:0)
如果我理解正确,您正在寻找一种在数据库中最好地存储数据的方法。您已决定维持今日点击列和点击直到现在列。 (我可能不在此基础上,但问题并不完全清楚)
我建议你不要像你所描述的那样尝试操纵列到列的数据,而是通过每天维护点击次数来实现:
date | count ------|------- Jul 31| 10876 Aug 1| 15721
(其中date是db timestamp / date数据类型中的a)
这将如何运作?
在启动时,您可以将所有行带入内存,并根据需要将其计数加起来以获得点击直到现在的值。
然后,您可以对今天的行进行特殊处理,您可以使用今日点击次数值更新相应的上下文。
要确定您是否已超过日期限制,您可以简单地:
todayCal
)clickCal
)todayCal
和clickCal