Ежевика - установить часть времени даты в начало дня (12:00 утра) - PullRequest
2 голосов
/ 16 декабря 2009

Поскольку я работаю над приложением напоминания, мне нужно показывать диалоговое окно напоминания всякий раз, когда наступает установленная дата для определенных данных. Я использую следующий код для хранения даты.

 long now = System.currentTimeMillis();
 DateField dateField = new DateField("",now,DateField.DATE);
 long date = dateField.getDate();

Например, когда устройство Дата и время 15 декабря 2009 г. и 5:30:43 А.М., я сохраняю данные, чтобы Напомнить мне 18 декабря 2009 г. Когда мое приложение хочет напомнить об этом, напоминание приходит в тот же день, что и ожидалось, но только в одно и то же время. т.е. 18 декабря 2009 г. в 5:30:43 Но я хотел, чтобы меня показали, как только наступило 18 декабря 2009 года, когда сейчас 12:00 утра. Я хочу напомнить об этом.

Я не хочу иметь время и в сохраненной дате. Я просто хочу напомнить диалог, как только день наступил в 12:00 утра.

Я думаю, что когда я храню его, вместо 'System.currentTimeMillis', я должен хранить всегда время '12: 00 A.M' в миллисекундах?

Может кто-нибудь, пожалуйста, посоветуйте мне, как этого добиться профессионально?

Большое спасибо.

1 Ответ

2 голосов
/ 16 декабря 2009

Вы можете использовать математику:

 public long getDayStartByMath(long date) {
  // 1000*60*60*24
  long fullDayPart = 86400000;
  return date - date % fullDayPart + (fullDayPart >> 1);
 }

Другой способ - использовать Календарь :

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