【发布时间】:2014-11-21 14:17:23
【问题描述】:
如何在java中比较三个日期/时间值?
目前我使用日期对象
我的意思是: 日期 1 - 今天,晚上 10:00 日期 2 - 明天,早上 5:00 Date3 - 当前时间
date3 在 date1 和 date2 之间,是否尊重日期和时间?
date1.compareTo(date3) * date2.compareTo(date3) > 0
和
date1.after(date3) && date2.before(date3)
不工作。
我在 Android 应用程序中使用此代码,如果我将时间设置为上午 11.30,它仍然会在上述条件下返回 true。如果我使用时间对象和第二种方法,它无法识别我的时间跨度在 2 天之间。
有什么想法吗?
编辑:准确地说,这是我当前的代码。应用就像一个闹钟。
// Current Date/Time
Date now = Calendar.getInstance().getTime();
// Time when user goes to bed (current day)
Date sleep = new Date(now.getYear(), now.getMonth(), now.getDate(), Shours, Sminutes);
// Time when user wakes up (next day)
// Get Next Day's Date and set Time
Calendar wk = Calendar.getInstance();
wk.setTime(sleep);
wk.set(Calendar.HOUR_OF_DAY, Whours);
wk.set(Calendar.MINUTE, Wminutes);
// tomorrow
wk.add(Calendar.DATE, 1);
// and convert to date
Date wake = wk.getTime();
// Compare
if(now.after(sleep) && now.before(wake)) {
Log.d("uSleep", "Debug: Night time");
}
else {
Log.d("uSleep", "Debug: Day Time");
}
也许还是太难理解了。想象一下你晚上 10 点睡觉,早上 5 点起床。现在如何通过将“上床睡觉”时间和“起床”时间与当前时间进行比较来确定您是否在睡觉。我需要使用“明天”作为您的“起床”时间,否则 java 似乎会比较同一天的所有时间,这是不可能的。
【问题讨论】:
-
您是说 Java 中的日期/时间比较从根本上被破坏了?我很难理解你在问什么。
-
“今天”不是一个时间点也无济于事。一个简短但完整的程序演示该问题将使您更容易为您提供帮助。也不清楚如何您正在使用
Time对象... -
“现在是晚于晚上 10 点,但早于第二天早上 5 点”
-
如果
date2是明天,你为什么要测试它是否是beforedate3? -
您声称在使用
Time类时它会失败 - 但您的代码似乎没有使用Time类。 (它也不是一个完整的程序……如果可能的话,如果您尝试将其复制为桌面 Java 控制台应用程序,那将非常有帮助。)