【发布时间】:2015-10-21 21:28:07
【问题描述】:
如果我正在检查的时间在我第一次比较之前,我正在尝试的以下代码正在工作。
如果 timeToCompare 是在下午 6 点之后,它的工作状态良好,如果它位于两个时间段之间,它的工作状态良好,但前提是它不在时间范围内但仍处于 if 状态的 01:00:00 AM。
如有错误请指正。
String string1 = "07:00:00 AM";
Date time1 = new SimpleDateFormat("HH:mm:ss a").parse(string1);
Calendar calendar1 = Calendar.getInstance();
calendar1.setTime(time1);
String string2 = "06:00:00 PM";
Date time2;
time2 = new SimpleDateFormat("HH:mm:ss a").parse(string2);
Calendar calendar2 = Calendar.getInstance();
calendar2.setTime(time2);
calendar2.add(Calendar.DATE, 1);
String timeToCompare = "01:00:00 AM";
System.out.println(formattedDate);
Date d = new SimpleDateFormat("HH:mm:ss a").parse(timeToCompare);
Calendar calendar3 = Calendar.getInstance();
calendar3.setTime(d);
calendar3.add(Calendar.DATE, 1);
我的 timeToCompare 但介于 string1 和 string2 之间
Date x = calendar3.getTime();
if (x.after(calendar1.getTime()) && x.before(calendar2.getTime())) {
//checkes whether the current time is between 14:49:00 and 20:11:13.
System.out.println("Hi from time between given slots");
}
1:00:00 AM 不在这两个时间的中间,但它仍然进入 if 条件,它正在打印“Hi from time between given slots”
【问题讨论】:
-
你能使用 Joda Time 或 Java 8 的 java.time 包吗?这将使您的生活更加更轻松。如果您能为我们提供一个简短但完整的示例,其中包含示例输入、预期输出和实际输出,也会有所帮助。
-
这些是导入 java.text.DateFormat;导入 java.text.ParseException;导入 java.text.SimpleDateFormat;导入 java.util.Calendar;导入 java.util.Date;导入 java.util.List;导入 java.util.Locale;
-
生成一个简短但完整的示例不仅仅是添加导入。我们应该能够复制您的代码,将其粘贴到一个空文本文件中,保存并运行它。现在,您使用的是 Java 6——它已经非常老了,你真的应该尝试更新到 Java 8——但你仍然可以使用 Joda Time。有什么阻止你这样做的吗?
-
1:00:00 AM tomorrow 肯定在 7:00:00 AM today 和 6:00:00 PM tomorrow 之间
-
您还应该注意SimpleDateFormat pattern specifiers 与
H(您使用的)和h、K和k的区别——H记录为 一天中的小时 (0-23) 可以让您解析22:33:44,但您也可以使用a这将允许22:33:44 AM... 这没有任何意义。如果您需要上午/下午,您应该使用h或K,notH
标签: java date calendar simpledateformat