黑莓 - 将日期的一部分设置为一天的开始(12:00 AM)

时间:2009-12-16 10:11:18

标签: datetime blackberry java-me time

当我正在处理提醒应用程序时,我需要在特定数据的设定日期到来时显示提醒对话框。我使用以下代码存储日期。

 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'时间存储,以毫秒为单位?

有人可以建议我实现它吗?

非常感谢。

1 个答案:

答案 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();
 }