gpt4 book ai didi

java - 当时钟改变时处理保存的纪元时间

转载 作者:行者123 更新时间:2023-12-01 04:37:50 26 4
gpt4 key购买 nike

我有一个闹钟应用程序,它使用以下两种方法:

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 +110-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 +011-12 07:47:10.441:D/CJS 日志记录(942):epochAlarmTime:1384325280 11/13/2013 6:48:00 AM +0

发生这种情况的原因是因为保存的闹钟时间保持相同的纪元时间,但当时钟发生变化时,本地时间会移动 1 小时。

有人对如何处理这个问题有任何建议吗?

干杯,查理

最佳答案

您可能希望使用本地时间,而不是使用 UNIX 时间,使用 Calendar 实例:

// Get Current Time 
Calendar currentTime = GregorianCalendar.getInstance();

// While Alarm Time in the past, fast forward a day
while (alarmTime.before(currentTime)) {
alarmTime.add(Calendar.DAY_OF_YEAR, 1);
}

关于java - 当时钟改变时处理保存的纪元时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17076390/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com