JAVA-如果条件不适用于参数

问题描述

我试图创建一个提交按钮,以保存单击时的用户输入,并且if条件部分存在问题。我想发生的是,当用户在10:00点(基于系统时间)之后单击按钮时,数据库上的报告将为“最新”,否则报告将为“不迟于”。但是每次我单击按钮时,即使系统时间在10:00之前,它总是显示“ Late”。该如何解决?

代码:

try {

    String sql = "INSERT INTO studentregisterlogin" + "(SSN,TimeIn,TimeOut,Report)" + "VALUES (?,?,?)";
    con = DriverManager.getConnection("jdbc:mysql://localhost/studentlogin","root","");
    pst = con.prepareStatement(sql);
    pst.setString(1,tfSerialNumber.getText());
    pst.setTimestamp(2,new Timestamp(System.currentTimeMillis()));

    pst.setString(3," ");

// My Problem is this Condition 

    SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm");
    Date date = new Date(System.currentTimeMillis());
    try { 
        if (date.after(dateFormat.parse("10:00"))) {
            pst.setString(4,"Late");
        } else if (date.before(dateFormat.parse("10:00"))){
            pst.setString(4,"NotLate");
        }
    } catch (ParseException ex) {
        Logger.getLogger(Menu.class.getName()).log(Level.SEVERE,null,ex);
    }
    pst.executeUpdate();
    //updateTable();

} catch (SQLException | HeadlessException ex) {
    JOptionPane.showMessageDialog(null,ex);
}

解决方法

您有一行 dateFormat.parse(“ 10:00”)

这实际上将日期解析为 1970年1月1日。因此,如果将其与当前时间进行比较,它将始终在当前时间之后。这就是您的if条件始终为true的原因。

相反,您可以使用以下代码获取当前时间。

Calendar rightNow = Calendar.getInstance();
int hour = rightNow.get(Calendar.HOUR_OF_DAY); //hour is in 24 hour format.

您可以使用此值将其与10:00点(如果上午是10,下午是22)进行比较。比较之前,请确保转换为24小时格式。

所以,就像

if(hour > 22){
  // Too late
}else{
  // Not late
}
,

java.time

我建议您使用现代Java日期和时间API java.time进行日期和时间工作。

如果您确定日期相同,并且只需要比较一天中的时间,则需要执行以下操作。首先,声明一个常数以保持您的上午10点阈值:

private static final LocalTime DUE_TIME = LocalTime.of(10,0);

现在进行比较:

    LocalTime now = LocalTime.now(ZoneId.systemDefault());
    if (now.isAfter(DUE_TIME)) {
        System.out.println("Late");
    } else {
        System.out.println("On time");
    }

现在(在我的时区中12:42)运行时,得到以下输出:

后期

LocalTime是一天中没有日期(也没有时区或UTC偏移量)的时间。从00:00到23:59:59.999999999。因此,从00:00到10:00的每个时间都将按时考虑,并且每天的其他所有时间都会延迟。

链接

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...