1

我在 24 小时内有一个字符串格式的时间,例如“02:00”,我想在另外两个时间之间检查它,例如“07:00”和“15:oo”。我该如何检查这个,因为时间是字符串格式吗?

我使用以下代码:

SimpleDateFormat simpDate = new SimpleDateFormat("kk:mm");
String s2=simpDate.format(date);
JLabel1.setText(s2);

现在我想检查字符串 s2 是否介于“7:00”和“15:00”之间,然后将值设置为另一个名为 JLabel2 的 JLabel:“First Shift”

4

2 回答 2

2

首先,您需要将字符串解析为Date对象实例。您可以使用DateFormat派生类来执行此操作(即SimpleDateFormat)。

然后,您可以使用两个日期的毫秒表示(通过 获得getTime())进行比较,或者仅使用 或 比较after(Date date)它们before(Date date)

如果您需要更复杂的操作,您应该使用Calendar该类。

此外,如果您的项目在日期方面很有效,我建议您使用Joda Time

编辑(回应评论):

使用Calendar类就是这样。首先,您需要一个 7:00 日期的日历实例:

Calendar cal1 = Calendar.getInstance();
cal1.set(Calendar.DATE, 12);       // The day of month you are working with
cal1.set(Calendar.MONTH, 7);       // The month of the year
cal1.set(Calendar.YEAR, 2012);     // The year
cal1.set(Calendar.HOUR_OF_DAY, 7); // Hour in 24-hours fashion
cal1.set(Calendar.MINUTE, 0);      // self-explanatory
cal1.set(Calendar.SECOND, 0);

Date shiftStart = cal1.getTime();

然后在班次结束时做同样的事情:

Calendar cal2 = Calendar.getInstance();
cal2.set( ... );       // Repeat almost every field from previous snippet
cal2.set(Calendar.HOUR_OF_DAY, 15); // Hour in 24-hours fashion

Date shiftEnd = cal2.getTime();

然后,您只需要检查要比较的日期是否在这些日期之间:

Date myDate = ...   // the date you want to compare
boolean checkShift = myDate.after(shiftStart) && myDate.before(shiftEnd);

无论如何,正如我已经说过的,如果您在项目中经常使用日期,我会使用 Joda Time,因为它可以简化很多日期处理。

于 2012-07-12T10:22:28.643 回答
2

您使用 aSimpleDateFormat将 转换StringDate。然后你可以比较日期。

在此处阅读有关SimpleDateFormat 的更多信息。

于 2012-07-12T10:12:04.013 回答