我正在制作一个活动。我想检查一下这个事件是否少于30分钟。如果不到30分钟,我不想让用户添加该事件。
我以日期格式存储时间。
日期格式为
df = new SimpleDateFormat("E MMM dd hh:mm:ss zzzz yyyy");
我有两个日期datefrom
和dateto
。我尝试获得datefrom
和dateto
的分钟数,并减去从分钟到分钟的分钟数,如果总分钟数小于30,则用户无法添加该事件。
但它运作不佳。每次都无法添加活动。
我的尝试是:
long frmMins = datefrom.getMinutes();
long toMins = dateto.getMinutes();
long calMinutes = toMins - frmMins;
else if (calMinutes < 30) {
showAlert("Event can not be less than 30 Minutes.");
}
事件记录:
Date: Sat Mar 19 16:00:00 GMT+05:30 2016,Todate: Sat Mar 19 23:59:00 GMT+05:30 2016
要以毫秒换算,然后在几分钟内我的尝试就是这样:
long frmMillis = datefrom.getTime();
long frmMins = TimeUnit.MILLISECONDS.toMinutes(frmMillis);
long toMillis = dateto.getTime();
long toMins = TimeUnit.MILLISECONDS.toMinutes(toMillis);
long calMinutes = toMins - frmMins;
但它大部分时间都给出负值。
我该怎么做?
答案 0 :(得分:0)
你也可以试试这个 -
long diff = dateto.getTime() - datefrom.getTime();
long diffSeconds = diff / 1000 % 60;
long diffMinutes = diff / (60 * 1000) % 60;
if (diffMinutes < 30) {
showAlert("Event can not be less than 30 Minutes.");
}
答案 1 :(得分:0)
由于我们在android中执行此操作,我建议您使用 alarm manager
来实现此目标
alarmMgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
AlarmManager.INTERVAL_HALF_HOUR,
AlarmManager.INTERVAL_HALF_HOUR, alarmIntent);
每半小时发出一次警报。现在你需要一个reciver来处理事件休息是你的app逻辑 这是一个完整的工作示例 http://www.vogella.com/tutorials/AndroidServices/article.html