如何比较当前日期和Jtable中的给定日期?

时间:2012-03-15 11:23:49

标签: java swing jtable tablecellrenderer

美好的一天。 我有另一个与Jtable有关的问题。 如果列中的日期(到期)超过或等于当前日期,我想更改表格的行颜色。

我尝试了这段代码,但是我收到一个错误:java.lang.NumberFormatException:对于输入字符串:“2012-03-15”

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");     
Calendar cal  = Calendar.getInstance();           
String expDateString = sdf.format(cal.getTime());
System.out.println(expDateString);
Double date = Double.parseDouble(expDateString);
Double val = Double.parseDouble(tableSummary.getModel().getValueAt(row, 6).toString());

for(int i=0; i<=tableSummary.getRowCount()-1; i++){
   if(val >= date){
        renderer.setBackground(red);
   }
}

谢谢!

这是一个新代码:

 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");     
 Calendar cal  = Calendar.getInstance();           
 String expDateString = sdf.format(cal.getTime());

 Date today = new Date(expDateString);
               System.out.println("ang churva is " + today);
 Date given = new Date(tableSummary.getModel().getValueAt(row, 6).toString());

 for(int i=0; i<=tableSummary.getRowCount()-1; i++){
      if(today.compareTo(given)>=0){
            renderer.setBackground(red);
       }
 }

但是我得到了这个异常:今天的日期java.lang.IllegalArgumentException = new Date(expDateString);

5 个答案:

答案 0 :(得分:1)

使用代码

DATEDIFF('d',NOW(),exdate)
结果集查询中的

。它将返回差异。改变它可能符合您的需求。

答案 1 :(得分:0)

您无法在双重

中转换日期字符串
Double date = Double.parseDouble(expDateString); //does not work!

答案 2 :(得分:0)

如何比较日期的简单示例。请注意,如果JTable中的对象已经是Dates,则不需要进行所有解析,这将使您的生活更轻松。

以下代码的输出是:

  

expiryDate = 2012-03-15
  tableDateOK = 2012-03-12
  tableDateExpired = 2012-03-18
  tableDateOK&gt; expiryDate = false
  tableDateExpired&gt; expiryDate = true

代码:

public static void main(String args[]) throws ParseException {
    String expiryDate  = "2012-03-15";
    String tableDateOk = "2012-03-12";
    String tableDateExpired = "2012-03-18";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

    System.out.println("expiryDate="+expiryDate);
    System.out.println("tableDateOK="+tableDateOk);
    System.out.println("tableDateExpired="+tableDateExpired);
    System.out.println("tableDateOK>expiryDate = " + sdf.parse(tableDateOk).after(sdf.parse(expiryDate)));
    System.out.println("tableDateExpired>expiryDate = " + sdf.parse(tableDateExpired).after(sdf.parse(expiryDate)));

}

答案 3 :(得分:0)

Double date = Double.parseDouble(expDateString);

这不起作用,因为字符串“2012-03-15”根本不是有效的双值。

我不明白你为什么要比较两个双重值:

  1. 如果您在表格中有日期,请使用Date.after()和Date.before()来查明您的日期是在现在之前还是之后。
  2. 如果表中有String,请使用SimpleDateFormat.parse()从中获取Date并执行第1点

答案 4 :(得分:0)

public  String compareDate( Request request ) throws ParseException { 
        Date debitDate= request.getPaymentTxn().getCrValDt();
        Date now = new Date();
        String response="";
        SimpleDateFormat sdfDate = new SimpleDateFormat("dd/MM/yyyy");
        String strCurrDate = sdfDate.format(now);
        String strDebitDate = sdfDate.format(debitDate);
        System.out.println("Current Date: " + strCurrDate);
        Date currentDate =  new SimpleDateFormat("dd/MM/yyyy").parse(strCurrDate);
        Date txnDate =  new SimpleDateFormat("dd/MM/yyyy").parse(strDebitDate);
        System.out.println("C -> "+currentDate);
        System.out.println("C -> "+txnDate); 
         if (txnDate!=null){
         if (currentDate.equals(txnDate))
         {
             System.out.println("Valid Txn");
             response="valid";
         }
         if (currentDate.after(txnDate))
         {
            System.out.println("--> Not  Valid TXN Past");   
            response="notValid";
         }
        if (currentDate.before(txnDate)){
            System.out.println("Future Valid TXn");
             response="future";
        }
     }
        return response;
    }

请查看它是否正常工作