好的,所以我正在制作一个发出通知的警报,比如每天下午3点,但是我希望用户可以选择这个,AM / PM和小时/分钟之间可以自由更改。我可能会使用TimePicker
,这是我到目前为止的代码:
public void startAlarm() {
Intent intent = new Intent(currentDay.this, AlarmReceiver.class);
PendingIntent sender = PendingIntent.getBroadcast(currentDay.this,0, intent,0);
long firstTime = SystemClock.elapsedRealtime();
firstTime += 15*1000;
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,firstTime,AlarmManager.INTERVAL_DAY, sender);
}
所以,我想我将会使用以下内容:
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 19);
cal.set(Calendar.MINUTE, 45);
然后使用
cal.getTimeInMillis()
但这不起作用,任何想法?谢谢!
编辑:所以,长话短说,我知道如何获得当前时间,然后添加让我们说15秒,但我希望有一个确定的时间工作例如下午5:14,我所做的一切尝试过不起作用答案 0 :(得分:2)
据我所知,你正在使用当前日期/时间获取一个Calendar实例,然后你要添加19小时45分钟,而不是将Calendar实例的时间明确设置为19:45。那是你的意思吗?您需要使用Calendar set()方法设置显式时间。
来自Calendar
的API参考日历的getInstance方法返回一个日历,其区域设置基于系统设置,其时间字段已使用当前日期和时间初始化:
Calendar rightNow = Calendar.getInstance()
public abstract void add (int field, int value)
Since: API Level 1
Adds the specified amount to a Calendar field.
Parameters
field the Calendar field to modify.
value the amount to add to the field.
Throws IllegalArgumentException if field is DST_OFFSET or ZONE_OFFSET.
编辑:将本地时间转换为UTC ...
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 19);
cal.set(Calendar.MINUTE, 45);
int offset = cal.getTimeZone().getOffset(cal.getTimeInMillis());
firstTime = cal.getTimeInMillis() + offset;
注意:我没有尝试过上述方法,但可能有一种更简单的方法,但它应该有效。我很难测试这样的东西,因为我的时区是GMT / UTC。