【发布时间】:2013-06-09 04:59:57
【问题描述】:
我有一个闹钟应用,它使用以下两种方法:
private void fastForwardAlarmToNext24Hours() {
// Get Alarm Time (unix)
DataStorageController alarmTimeController = new DataStorageController(getApplicationContext());
epochAlarmTime = alarmTimeController.getAlarmTime();
// Get Current Time (unix)
long epochCurrentTime = System.currentTimeMillis() / 1000L;
// While Alarm Time in the past, fast forward another 24 hours
while (epochAlarmTime < epochCurrentTime) {
epochAlarmTime = epochAlarmTime + (24*60*60); // Add a days worth of seconds
}
}
private Long getNumberOfSecondsUntilAlarm() {
long epochCurrentTime = System.currentTimeMillis() / 1000L;
return epochAlarmTime - epochCurrentTime;
}
这很好,我得到了这些结果:
夏天
10-12 07:46:26.678: D/CJS 记录 (776): epochCurrentTime: 1381560386 10/12/2013 7:46:26 AM +1 10-12 07:46:26.678: D/CJS 记录 (776): epochAlarmTime: 1381560480 10/12/2013 7:48:00 AM +1
但是,当我将设备的日期时间转发到冬季(时钟更改后)时,我得到以下结果,并且闹钟会在 1 小时后触发:
冬天
11-12 07:47:10.441: D/CJS 记录 (942): epochCurrentTime: 1384242430 11/12/2013 7:47:10 AM +0 11-12 07:47:10.441:D/CJS 日志记录(942):epochAlarmTime:1384325280 11/13/2013 6:48:00 AM +0
发生这种情况的原因是因为保存的闹钟时间保持相同的纪元时间,但是当时钟发生变化时,本地时间会移动 1 小时。
有人对如何处理这个问题有任何建议吗?
干杯,查理
【问题讨论】: