如何检查时间戳是否迟到

How to check if a timestamp is late

我有一个时间戳,我想检查时间是在某个时间 (9:00 AM) 之前还是之后。更具体地说,我想知道一个人是否迟到,截止时间是上午 9 点。我该如何编码?

2015-09-22 08:59:59 //Print on time
2015-09-22 09:00:00 //Print on time
2015-09-22 09:00:01 //Print you are late

假设输入是一个String,你可以执行以下操作

String input = ...;
String time = input.split(" ")[1],
    hour = time.split(":")[0],
    minute = time.split(":")[1],
    seconds = time.split(":")[2];

if(Integer.parseInt(hour) > 9 && Integer.parseInt(minute) > 0) {
    // Not on time
} 

虽然这是假设输入始终是完美的,但您应该使用 try-catch 块或事先检查输入,因为这可能会引发异常。

LocalDateTime time = LocalDateTime.of(2015, 9, 22, 9, 0, 0);
LocalDateTime now = LocalDateTime.now();

if (now.compareTo(time) > 0)
    System.out.println("You are late");
else System.out.println("You are in time");

如果您使用的是字符串,则必须先将它们拆分,如@Deximus 所述

你可以有类似下面的代码

// Get the provided date and time
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar providedDate  = Calendar.getInstance();
providedDate.setTime(df.parse(stringInstanceRepresentingDate));

// Get the current date and time
Calendar cal = Calendar.getInstance();

// Set time of calendar to 09:00
cal.set(Calendar.HOUR_OF_DAY, 9);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);

// Check if current time is after 09:00 today
boolean afterNine = providedDate.after(cal);

if (afterNine ) {
    System.out.println("You are late");
}
else {
    System.out.println("You are not late");
}

我认为你可以这样做:

public static final String TIME_STAMP_FORMAT = "yyyy-MM-dd HH:mm:ss";

    public static void main(String[] args) {

        Date standard = getStandardDate();
        SimpleDateFormat format = new SimpleDateFormat(TIME_STAMP_FORMAT);

        List<String> data = new ArrayList<String>();
        data.add("2015-09-22 08:59:59");
        data.add("2015-09-22 09:00:00");
        data.add("2015-09-22 09:00:01");

        for (String date : data) {
            if(isLate(date, format)) {
                System.out.println(date + " is Late");
            } else {
                System.out.println(date + " is On Time");
            }
        }

    }

    /**
     * check is Late or not
     * */
    public static boolean isLate(String date, SimpleDateFormat format) {
        Date standard = getStandardDate();
        Date inputDate = null;
        boolean result = false;
        try {
            inputDate = format.parse(date);
            if(inputDate.after(standard)) {
                result = true;
            } 
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return result;
    }

    /**
     * get standard date
     * */
    public static Date getStandardDate() {
        Date dateNow = new Date ();
        Calendar cal = Calendar.getInstance();
        cal.setTime(dateNow);
        cal.set(Calendar.DAY_OF_MONTH, 22);
        cal.set(Calendar.HOUR_OF_DAY, 9);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        return cal.getTime();
    }

希望对您有所帮助!