美好的一天。 我有另一个与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);
答案 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”根本不是有效的双值。
我不明白你为什么要比较两个双重值:
答案 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;
}
请查看它是否正常工作