[英]How to compare between two dates in java?
向每位辛勤工作的開發人員致敬,
並為那里的每個奮斗者歡呼。
其實我在這里是因為我陷入了一個非常基本的問題。
我正在構建一個客戶端服務器應用程序,我對如何在從jtable提取的兩個日期之間進行比較感到困惑(最終,我通常從不對日期進行任何操作)。
我使用了以下代碼:
public static final String DATE_FORMAT_NOW = "yyyy-MM-dd";
public static String now() {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
return sdf.format(cal.getTime());
}
public static void ColorTheCell2(JTable jTable2){
jTable2.getColumn("Date d'expiration").setCellRenderer(
new DefaultTableCellRenderer() {
@Override
public Component getTableCellRendererComponent
(JTable table,Object value,boolean isSelected,boolean hasFocus,int row,int column){
Calendar datetable=Calendar.getInstance();
String date=value.toString();
String day=""+date.substring(8).toString();
String month=""+date.substring(5, 7).toString();
String year=""+date.substring(0,4).toString();
datetable.set(Integer.parseInt(year),Integer.parseInt(month),Integer.parseInt(day));
Calendar curdate=Calendar.getInstance();
String date1=now();
String day1=""+date1.substring(8).toString();
String month1=""+date1.substring(5, 7).toString();
String year1=""+date1.substring(0,4).toString();
curdate.set(Integer.parseInt(year1),Integer.parseInt(month1)+1,Integer.parseInt(day1));
if(datetable.before(curdate)){
setText(value.toString());
setBackground(Color.red);
}
else{
setText(value.toString());
}
return this;
}
});
}
感謝您的時間。 最好的祝福
您不知道單元格中值的類型是什么。 如果它是一個字符串,則說明您做錯了:它應該是一個Date,並且渲染器應該使用DateFormat
來渲染日期(除了設置適當的背景之外。例如,這將允許按時間順序對表進行排序而不是按字典順序。
如果已經是一個Date,則使用其compareTo方法將其與當前日期進行比較。
您的now()方法確實很奇怪,因為它似乎返回String而不是Date。 表示日期的適當類型是日期,而不是字符串。 每次需要使用日期作為字符串時,請使用日期並將其格式化為日期格式。 不要做相反的事情(每次需要一個Date時,都使用String並手動對其進行解析)。
通常,我更喜歡將Joda Time API用於Java中與日期和時間相關的內容。
如果“ Object value
值是Date
類型,則將其強制轉換為Date
Date valDate = (Date) value;
或者,如果它是String
則解析出Date
-
Date valDate = new SimpleDateFormat("pattern in value").parse((String) value);
獲取當前日期-
Date currDate = new Date();
然后,您可以在Date
類中使用以下任何一種方法-
boolean after(Date when)
boolean before(Date when)
int compareTo(Date anotherDate)
例如
if(valDate.before(currDate)) {
//...
API doc: Date , SimpleDateFormat
Date
實現Comparable
接口,因此可以使用compareTo()方法在兩個日期之間進行比較。 與Calendar
相同,只需使用其compareTo()方法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.