我目前正在从数据库中获取日期格式,其格式为 HH:mm,例如10:00。
然后我更改时间格式,以便可以以 milis 为单位来设置重复闹钟:
SimpleDateFormat format = new SimpleDateFormat("HH:mm");
String time = collectionString;
long timeOfFirstCollectionInMillis = format.parse(time).getTime();
System.out.println(collectionInMillis);
//Set Alarm to Repeat
manager.setRepeating(AlarmManager.RTC_WAKEUP,collectionInMillis, interval, pendingIntent);
问题是它认为日期已经过去了,因为时间上没有附加日期(我认为)。我怎样才能设置它,以便如果时间已经过去,比如现在是上午 11:00,但时间应该是上午 10:00,则将其设置为 future 的日期,如果时间是上午 9:00,但时间是当前日期上午 10:00?
最佳答案
我将使用 Calendar 类来实现此目的。所以基本上:
- 将时间设置为日历,并将日期设置为今天
- 将其与当前时间戳进行比较
- 如果它在当前时间之前,则将其设置为 future 的日期(下一小时,第二天,...)
- 如果是在当前时间之后,您可以按原样使用
粗略地说:
Calendar now = Calendar.getInstance();
now.setTime(new Date());
Calendar cal = Calendar.getInstance();
cal.setTime(timeOfFirstCollectionInMillis);
cal.set(Calendar.YEAR, now.get(Calendar.YEAR));
对月份和日期执行相同的操作...然后:
if (cal.before(now)) {
// increase
} else {
timeOfFirstCollectionInMillis = cal.getTime();
}
关于java - 设置当前或 future 日期的闹钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26506559/