gpt4 book ai didi

java - 在android中获取我指定时间之前的时间

转载 作者:行者123 更新时间:2023-12-02 10:38:27 25 4
gpt4 key购买 nike

我正在制作一个闹钟应用程序,它应该能够显示下一次闹钟之前的时间。我可以使用当前时间、小时:分钟:AM/PM 值以及星期几,例如星期二凌晨 3:15。我该如何计算这个?我感兴趣的只是像这样打印它:07h 35m。

我所做的就是尝试将其转换为日期,然后将其转换回毫秒,并在后面进行一些数学运算,但它不起作用,我不断得到错误的结果。

编辑:

我的问题是,我的时间是由自定义 View 设置的,例如星期二凌晨 3:15。我需要将其转换为最接近的 Date 对象。例如,当今天是星期二,凌晨 2:00 时,我将只编辑时间,但当今天是星期五时,我需要添加一些天数和时间。

最佳答案

试试这个:

    SimpleDateFormat format = new SimpleDateFormat("hh:mm a EEE", Locale.ENGLISH);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(format.parse("3:15 AM Tue").getTime());

Calendar now = Calendar.getInstance();
Calendar target = Calendar.getInstance();

if (calendar.get(Calendar.DAY_OF_WEEK) > now.get(Calendar.DAY_OF_WEEK)) {
target.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY));
target.set(Calendar.MINUTE, calendar.get(Calendar.MINUTE));
target.add(Calendar.DATE, calendar.get(Calendar.DAY_OF_WEEK) - now.get(Calendar.DAY_OF_WEEK));
} else if (calendar.get(Calendar.DAY_OF_WEEK) < now.get(Calendar.DAY_OF_WEEK)) {
target.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY));
target.set(Calendar.MINUTE, calendar.get(Calendar.MINUTE));
target.add(Calendar.DATE, 7 - (now.get(Calendar.DAY_OF_WEEK) - calendar.get(Calendar.DAY_OF_WEEK)));
} else {
if (calendar.get(Calendar.HOUR_OF_DAY) > now.get(Calendar.HOUR_OF_DAY)) {
target.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY));
target.set(Calendar.MINUTE, calendar.get(Calendar.MINUTE));
} else if (calendar.get(Calendar.HOUR_OF_DAY) < now.get(Calendar.HOUR_OF_DAY)) {
target.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY));
target.set(Calendar.MINUTE, calendar.get(Calendar.MINUTE));
target.add(Calendar.DATE, 7);
} else {
if (calendar.get(Calendar.MINUTE) > now.get(Calendar.MINUTE)) {
target.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY));
target.set(Calendar.MINUTE, calendar.get(Calendar.MINUTE));
} else if (calendar.get(Calendar.MINUTE) < now.get(Calendar.MINUTE)) {
target.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY));
target.set(Calendar.MINUTE, calendar.get(Calendar.MINUTE));
target.add(Calendar.DATE, 7);
} else {
// target time is now!
}
}
}

long remainingTime = target.getTimeInMillis() - now.getTimeInMillis();
final long hr = TimeUnit.MILLISECONDS.toHours(remainingTime);
final long min = TimeUnit.MILLISECONDS.toMinutes(remainingTime - TimeUnit.HOURS.toMillis(hr));
String result = String.format("%02d:%02d", hr, min);

关于java - 在android中获取我指定时间之前的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53103097/

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