比较存储在String中的时间

时间:2012-07-12 10:09:54

标签: java swing datetime

我有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”

2 个答案:

答案 0 :(得分:2)

您使用SimpleDateFormatString转换为Date。然后你可以将日期进行比较。

详细了解SimpleDateFormat here

答案 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,因为它会减轻很多日期处理。