我有24小时的字符串格式,如“02:00”,我想在另外两次之间检查,例如“07:00”和“15:oo”。我如何检查这个,因为时间是字符串格式?
我使用以下代码:
SimpleDateFormat simpDate = new SimpleDateFormat("kk:mm");
String s2=simpDate.format(date);
JLabel1.setText(s2);
现在我想检查String s2是否介于“7:00”和“15:00”之间,然后将该值设置为另一个名为JLabel2的JLabel:“First Shift”
答案 0 :(得分:2)
您使用SimpleDateFormat
将String
转换为Date
。然后你可以将日期进行比较。
答案 1 :(得分:2)
首先,您需要将字符串解析为Date
个对象实例。您可以使用DateFormat
派生类来执行此操作(即SimpleDateFormat
)。
然后,您可以使用两个日期的毫秒表示(通过getTime()
获得)进行比较,或者只使用after(Date date)
或before(Date date)
进行比较。
如果您需要更复杂的操作,则应使用Calendar
类。
此外,如果您的项目使用Joda Time
建议的日期很多编辑(回应评论):
使用Calendar
类就是这样。首先,您需要7月日期的日历实例:
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,因为它会减轻很多日期处理。