【问题标题】:Blackberry - Set Time part of Date to the Start of a Day (12:00 AM)Blackberry - 将日期的时间部分设置为一天的开始(上午 12:00)
【发布时间】:2009-12-16 10:11:18
【问题描述】:

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

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

例如,当设备日期和时间是 2009 年 12 月 15 日和上午 5:30:43 时,我将存储一个数据以在 2009 年 12 月 18 日提醒我。 当我的应用程序想要提醒它时,提醒会在预期的同一日期出现,但也仅在同一时间出现。即:2009 年 12 月 18 日,上午 5:30:43 但我想在 2009 年 12 月 18 日凌晨 12:00 到达时立即显示,我想提醒一下。

我不想在存储的日期中也有时间。我只想在凌晨 12:00 时提醒对话

我认为当我存储它时,而不是“System.currentTimeMillis”,我应该始终以“12:00 A.M”时间(以毫秒为单位)存储?

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

非常感谢。

【问题讨论】:

    标签: datetime blackberry java-me time


    【解决方案1】:

    你可以使用数学:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多