当我正在处理提醒应用程序时,我需要在特定数据的设定日期到来时显示提醒对话框。我使用以下代码存储日期。
long now = System.currentTimeMillis();
DateField dateField = new DateField("",now,DateField.DATE);
long date = dateField.getDate();
例如,当设备日期&时间是2009年12月15日& 5:30:43 A.M,我正在存储数据,以便在2009年12月18日提醒我。 当我的应用程序想要提醒它时,提醒与预期相同,但也仅在同一时间。即:2009年12月18日,上午5:30:43 但是我想在2009年12月18日到达时,我们想要在12:00 AM到达,我想提醒它。
我不想在存储日期也有时间。我只想在当天中午12点到达时提醒对话。
我认为当我存储它而不是'System.currentTimeMillis'时,我应该以'12:00 A.M'时间存储,以毫秒为单位?
有人可以建议我实现它吗?
非常感谢。
答案 0 :(得分:2)
您可以使用数学:
public long getDayStartByMath(long date) {
// 1000*60*60*24
long fullDayPart = 86400000;
return date - date % fullDayPart + (fullDayPart >> 1);
}
其他方式是使用Calendar:
public long getDayStartByCalendar(long date) {
Calendar c = Calendar.getInstance();
c.setTime(new Date(date));
c.set(Calendar.AM_PM, Calendar.AM);
c.set(Calendar.HOUR, 12);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return c.getTime().getTime();
}