gpt4 book ai didi

android - 使用日历获取时间直到给定唤醒时间

转载 作者:行者123 更新时间:2023-11-29 21:03:31 25 4
gpt4 key购买 nike

我正在创建一个应用程序,我需要知道给定唤醒时间之前的时间,例如 8:30,所以我有这段代码有时可以工作

String hours = separated[0]; // 8
String minutes = separated[1]; // 30
c.add(Calendar.DAY_OF_MONTH, 1);
c.set(Calendar.HOUR_OF_DAY, Integer.parseInt(hours));
c.set(Calendar.MINUTE, Integer.parseInt(minutes));
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
long timeUntilStageTwo = (c.getTimeInMillis() - System.currentTimeMillis());

问题是,如果时间是午夜 1:00,它仍然会在日历上加起来 1 天,然后计算到第二天的时间,这将是 30 小时左右。我怎样才能正确计算到第二天醒来时间的时间,即使是在午夜?

最佳答案

有很多方法可以做到这一点。

一种方法是,如果您超过了原始时间,则只增加 1 天:

String hours = separated[0]; // 8
String minutes = separated[1]; // 30
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, Integer.parseInt(hours));
c.set(Calendar.MINUTE, Integer.parseInt(minutes));
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);

if(c.before(Calendar.getInstance()) {
c.add(Calendar.DAY_OF_MONTH, 1);
}

long timeUntilStageTwo = (c.getTimeInMillis() - System.currentTimeMillis());

另一种简单的方法是保持代码不变,然后获取最终值并从中减去完整天数:

long timeUntilStageTwo = (c.getTimeInMillis() - System.currentTimeMillis()) % (24*60*60*1000);

关于android - 使用日历获取时间直到给定唤醒时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25231844/

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