首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将数组列表中给定数据的字符串格式转换为日期格式

如何将数组列表中给定数据的字符串格式转换为日期格式
EN

Stack Overflow用户
提问于 2019-07-24 07:55:41
回答 3查看 83关注 0票数 0

假设我有如下数据输入:

代码语言:javascript
复制
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对象,并使用可比较的接口使用可比方法进行排序:

这是我的类人员,它包括所需的对象:

代码语言:javascript
复制
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;
    }

我的问题就在眼前:

代码语言:javascript
复制
    int res = this.DA_PRM_CTR_ORDER.compareTo(converted);

当我想按DA_PRM_CTR_ORDER值进行排序时,它向我展示了以下问题:

类型字符串中的方法compareTo( String )不适用于参数(日期)

请问我如何解决这个问题?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-07-24 08:03:39

一个快速的解决方法可能是将this.DA_PRM_CTR_ORDER解析为Date。因此,您突出显示的线条如下:

代码语言:javascript
复制
int res = df.parse(this.DA_PRM_CTR_ORDER).compareTo(converted);
票数 3
EN

Stack Overflow用户

发布于 2019-07-24 08:10:28

您应该使用Date.compareTo(Date)而不是String.compareTo(Date)。

建议:

代码语言:javascript
复制
Long currentDate = Long.parseLong(this.DA_PRM_CTR_ORDER); 
return currentDate.compareTo(Long.parseLong(other.getDA_PRM_CTR_ORDER()));
票数 1
EN

Stack Overflow用户

发布于 2019-07-24 08:15:15

如果您比较要比较的两个日期的时间戳,情况会更好。

代码语言:javascript
复制
        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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57177916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档