更改系统日期后,我的页面将不允许我使用方法

时间:2013-06-10 12:36:40

标签: jsp

我有一个类似于预订系统的页面,在我的页面中我导入了java类,其中包含一个检测预订已过期,验证或使用的方法。
对于经过验证和使用的我没有问题,但是对于过期的(在使用后未过期,但在经过一段时间后未经过验证而过期)我遇到了这个问题:

我在2013年6月11日预订了一个房间,我没有验证它。然后将系统日期更改为15-06-2013,我尝试刷新网页,但它不会将图书条目更新为“已过期”。但是,如果我运行java类,它会更新书籍条目。 JSP无法识别系统日期的更改吗?

信息:我的到期时间是预订超过未经验证的一天。

编辑:这是一些代码

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
String code, status, count, standard, deluxe, superiors, superiord;
Date dateNow, dateIn, dateOut;
dateNow = cal.getTime();

rs = db.view("select * from booking");
try {
    while (rs.next()) {
        code = rs.getString("code");
        standard = rs.getString("standard");
        deluxe = rs.getString("deluxe");
        superiors = rs.getString("superiors");
        superiord = rs.getString("superiord");
        status = rs.getString("status");
        count = rs.getString("isCount");

        dateIn = dateFormat.parse(rs.getString("datein").toString());
        dateOut = dateFormat.parse(rs.getString("dateout").toString());

        if (dateNow.equals(dateIn)) {  //This is after being validated
            if (status.equalsIgnoreCase("Paid")) {
                if (count.equalsIgnoreCase("False")) {
                    db.insert("update room set standard=standard-" + standard + ", deluxe=deluxe-" + deluxe + ", superiors=superiors-" + superiors + ", superiord=superiord-" + superiord + "");
                    db.insert("update booking set status='Being used', isCount='True' where code='" + code + "'");
                }
            }
        } else if (dateNow.after(dateIn)) {  //This is expired one
            if (status.equalsIgnoreCase("Waiting")) {
                db.insert("delete from booking where code='" + code + "'");
            }
        } else if (dateNow.after(dateOut)) {  //This is after being used or finished
            if (status.equalsIgnoreCase("Dipakai")) {
                db.insert("update kamar set standard=standard+" + standard + ", deluxe=deluxe+" + deluxe + ", superiors=superiors+" + superiors + ", superiord=superiord+" + superiord);
                db.insert("update pesan set status='Selesai' where code='" + code + "'");
            }
        }
    }
} catch (Exception e) {
}

在我将系统日期更改为将来后,我的页面无法读取第二个if(已过期)。

1 个答案:

答案 0 :(得分:0)

没有看到你的所有代码并知道你在做什么我无法确切知道,但我会说改变系统时间作为测试是一个坏主意。

一方面它会搞乱JSP编译和编译。

你应该做的是写一些Unit Tests并使它成为传递给方法的当前时间。在单元测试中,您传递的是硬编码时间,而不是Calendar.getInstance()