假设我有如下数据输入:
018492114,51863406,X0,1,20160218
018529816,51864472,X0,1,20150603
018543434,51864629,X0,1,20150702
018543464,51864990,N5+,1,2015063
018530309,51865142,X0,1,20150603我只想将5列的元素转换为日期格式,因为它是作为字符串导入的。我想通过DA_PRM_CTR_ORDER变量( end列)进行排序操作。
请注意,我使用定义为Personne的arraylist对象,并使用可比较的接口使用可比方法进行排序:
这是我的类人员,它包括所需的对象:
public class Personne implements Comparable {
private String IDC_PSE_PCL;
private String IDC_CD_NOT;
private String CD_NOTE;
private String IDT_ETT_PSE;
private String DA_PRM_CTR_ORDER;
public Personne(String IDC_PSE_PCL, String IDC_CD_NOT,
String DA_PRM_CTR_ORDER, String IDT_ETT_PSE, String CD_NOTE) {
this.IDC_PSE_PCL = IDC_PSE_PCL;
this.IDC_CD_NOT = IDC_CD_NOT;
this.IDT_ETT_PSE = IDT_ETT_PSE;
this.CD_NOTE = CD_NOTE;
this.DA_PRM_CTR_ORDER = DA_PRM_CTR_ORDER;
}
public String getIDC_CD_NOT() {
return this.IDC_CD_NOT;
}
public String getIDC_PSE_PCL() {
return this.IDC_PSE_PCL;
}
public String getDA_PRM_CTR_ORDER() {
return this.DA_PRM_CTR_ORDER;
}
public String getIDT_ETT_PSE() {
return this.IDT_ETT_PSE;
}
public String getCD_NOTE() {
return this.CD_NOTE;
}
@Override
public int compareTo(Object o) {
Personne other = (Personne) o;
DateFormat df = new SimpleDateFormat("yyyyMMdd");
Date converted = (Date) df.parse(other.getDA_PRM_CTR_ORDER());
int res = this.DA_PRM_CTR_ORDER.compareTo(converted);
// Si Egalite des dates
if (res == 0) {
res = IDT_ETT_PSE.compareTo(other.getIDT_ETT_PSE());
}
return res;
}我的问题就在眼前:
int res = this.DA_PRM_CTR_ORDER.compareTo(converted);当我想按DA_PRM_CTR_ORDER值进行排序时,它向我展示了以下问题:
类型字符串中的方法compareTo( String )不适用于参数(日期)
请问我如何解决这个问题?
发布于 2019-07-24 08:03:39
一个快速的解决方法可能是将this.DA_PRM_CTR_ORDER解析为Date。因此,您突出显示的线条如下:
int res = df.parse(this.DA_PRM_CTR_ORDER).compareTo(converted);发布于 2019-07-24 08:10:28
您应该使用Date.compareTo(Date)而不是String.compareTo(Date)。
建议:
Long currentDate = Long.parseLong(this.DA_PRM_CTR_ORDER);
return currentDate.compareTo(Long.parseLong(other.getDA_PRM_CTR_ORDER()));发布于 2019-07-24 08:15:15
如果您比较要比较的两个日期的时间戳,情况会更好。
Date self = (Date) df.parse(this.getDA_PRM_CTR_ORDER());
String ConvertedTs = String.valueOf(converted.getTime());
String selfTs = String.valueOf(self.getTime());
int res = selfTs.compareTo(ConvertedTs);https://stackoverflow.com/questions/57177916
复制相似问题