2

良い一日。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 at Date today = new Date(expDateString);

4

5 に答える 5

1

コードを使用する

DATEDIFF('d',NOW(),exdate)

結果セットクエリで。差額を返します。おそらくあなたのニーズに合うようにそれを変更してください。

于 2012-07-17T09:44:02.793 に答える
0

ラインDouble date = Double.parseDouble(expDateString);

文字列「2012-03-15」は有効な double 値ではないため、これは機能しません。

2 つの double 値を比較しようとしている理由がわかりません。

  1. テーブルに日付がある場合は、 Date.after() および Date.before() を使用して、日付が今より前か後かを調べます。
  2. テーブルに文字列がある場合は、SimpleDateFormat.parse() を使用して日付を取得し、ポイント 1 を実行します。
于 2012-03-15T11:35:07.883 に答える
0

日付文字列を double にキャストすることはできません

Double date = Double.parseDouble(expDateString); //does not work!
于 2012-03-15T11:30:30.570 に答える
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;
    }

正常に動作していることを確認してください

于 2013-02-23T12:29:20.780 に答える
0

日付を比較する方法の簡単な例。JTable 内のオブジェクトがすでに Dates である場合、すべての解析は必要ないことに注意してください。これにより、作業が楽になります。

以下のコードの出力は次のとおりです。

expiryDate=2012-03-15
tableDateOK=2012-03-12
tableDateExpired=2012-03-18
tableDateOK>expiryDate = false
tableDateExpired>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)));

}
于 2012-03-15T11:34:34.327 に答える