我正在制作一个android应用程序,每次点击一个按钮,我都会在前天试着得到它。
如果我按下按钮,它应该会带来昨天,如果再次点击它,它应该会在前天给我带来,如果我再做一次,那是前一天,等等。
这就是我昨天得到的东西:
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.add(Calendar.DATE, -1);
long yesterdayEnd = cal.getTimeInMillis() / 1000;发布于 2014-05-14 16:36:22
这里有两种方法来实现你想要的。
private Calendar yesterday = null;
...
public long getYesterday() {
if (this.yesterday == null) {
this.yesterday = Calendar.getInstance();
this.yesterday.set(Calendar.HOUR_OF_DAY, 23);
this.yesterday.set(Calendar.MINUTE, 59);
this.yesterday.set(Calendar.SECOND, 59);
this.yesterday.set(Calendar.MILLISECOND, 0);
}
this.yesterday.add(Calendar.DATE, -1);
return this.yesterday.getTimeInMillis() / 1000;
}或
private int backDays = 0;
...
public long getYesterday() {
Calendar yesterday = Calendar.getInstance();
yesterday.set(Calendar.HOUR_OF_DAY, 23);
yesterday.set(Calendar.MINUTE, 59);
yesterday.set(Calendar.SECOND, 59);
yesterday.set(Calendar.MILLISECOND, 0);
yesterday.add(Calendar.DATE, -backDays);
return yesterday.getTimeInMillis() / 1000;
}在第二种情况下,每次按下按钮时都需要增加backDays,而在第一次则不需要这样做。当您按下按钮时,需要调用该方法。
如果要从零开始重置值,请在第一次中使用yesterday = null;和backDays = 0;。
另外,我建议您使用Calendar或Date变量,而不是long变量。将方法更改为public Calendar getYesterday() {甚至public Date getYesterday() {比使用long更干净。
发布于 2014-05-14 16:32:48
使其成为活动中的字段:
private Calendar cal;在onCreate
cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);在Button onClickListener中作为活动的内部类:
cal.add(Calendar.DATE, -1);https://stackoverflow.com/questions/23659209
复制相似问题