首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android -如何设置特定日期前X天的闹钟

Android -如何设置特定日期前X天的闹钟
EN

Stack Overflow用户
提问于 2014-04-08 13:59:41
回答 2查看 2.2K关注 0票数 1

我已经看过很多关于创建AlarmManager和在特定日期弹出通知的教程,但我想知道如何在X天前做到这一点。

例如,如果我在2014年1月8日有一个活动,我想将其提前一周设置为2014年1月1日,我只需将闹钟设置为:

代码语言:javascript
复制
Calendar calendar = Calendar.getInstance();

calendar.set(Calendar.MONTH, 1);
calendar.set(Calendar.YEAR, 2013);
calendar.set(Calendar.DAY_OF_MONTH, Day-7);

calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.AM_PM,Calendar.AM);

Intent myIntent = new Intent(MainActivity.this, MyReceiver.class);
pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, myIntent, 0);

AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);

但是,如果活动是在2014年1月4日,那么我想将日期设置为2013年12月28日。有没有可以做到这一点的函数?或者我必须写很多案例?

EN

回答 2

Stack Overflow用户

发布于 2014-04-08 14:16:25

活动时间为2014年1月4日:

代码语言:javascript
复制
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MONTH, 0);
calendar.set(Calendar.YEAR, 2014);
calendar.set(Calendar.DAY_OF_MONTH, 4);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
long eventTime=calendar.getTimeInMillis();//Returns Time in milliseconds

long oneDay=AlarmManager.INTERVAL_DAY;//Converts 24 Hrs(1 Day) to milliseconds
int noOfDays=4
long reminderTime=eventTime-(noOfDays*oneDay);//Time in milliseconds when the alarm will shoot up & you do not need to concider month/year with this approach as time is already in milliseconds.

//Set alarm
Intent myIntent = new Intent(MainActivity.this, MyReceiver.class);
pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, myIntent,0);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, reminderTime, pendingIntent);

希望这能有所帮助!

票数 3
EN

Stack Overflow用户

发布于 2014-04-08 14:05:56

以毫秒为单位获取当前时间,然后减去no。天数,这里1 day= 24*60*60*1000 = 86400000

代码语言:javascript
复制
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
  alarmManager.set(AlarmManager.RTC_WAKEUP, (calendar.getTimeInMillis()-(no. of days * 86400000)), pendingIntent);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22928684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档