1

ログイン中にアプリケーションの有効期限を確認するアクション ボタンがあります。

public void actionPerformed(ActionEvent ae) {
  Calendar expiredate = Calendar.getInstance();
  expiredate.set(2012, 10, 10);
  if (ae.getSource() == button) {
    char[] temp_pwd = t_pass.getPassword();
    String pwd = null;
    pwd = String.copyValueOf(temp_pwd);

    if (db.checkLogin(t_name.getText(), pwd)) {
      try {
        if (Calendar.getInstance().after(expiredate)) {
          JOptionPane.showMessageDialog(null, "License has Expired\n Please Re-new the License from the Provider", "Re-new License", JOptionPane.ERROR_MESSAGE);
          t_name.setText("");
          t_pass.setText("");
          t_name.requestFocus();
          return;
        }
        JOptionPane.showMessageDialog(null, "You have logged in successfully. Click OK to Continue", "Success",
        JOptionPane.INFORMATION_MESSAGE);
        MainFrame page = new MainFrame();
        page.setVisible(true);
        setVisible(false);
      } catch(Exception ai){
        JOptionPane.showMessageDialog(null, ai, "Exception",
        JOptionPane.INFORMATION_MESSAGE);
      }
    } else {
      JOptionPane.showMessageDialog(null, "Login failed!\nWrong Username or password", "Failed!!",
      JOptionPane.ERROR_MESSAGE);
      t_name.setText("");
      t_pass.setText("");
      t_name.requestFocus();
      return;
    }
  }//if
}//method

問題は、システムの日付が 2012 年 10 月 17 日であることです。どうやらログインはまだ行われているようです。しかし、有効期限を 2012 から 2011 に変更すると、ライセンスの検証が行われます。システムが 2012 年 10 月 10 日の日付を無視する問題は何ですか?

4

2 に答える 2

5

月定数10は11月です。NOVEMBER = 10したがって、月を11月に設定しています。

使用する必要があります

expiredate.set(2012, Calendar.OCTOBER, 10);

Java では月が から始まるため、このような用途には常にCalendarで提供される月定数を使用してください。0したがって、混乱を避けることができます。

于 2012-10-17T09:04:06.033 に答える