Java 错误:将日期格式化为新格式(Android)时,无法将给定对象格式化为日期

Java 错误:将日期格式化为新格式(Android)时,无法将给定对象格式化为日期,java,android,date,firebase,firebase-realtime-database,Java,Android,Date,Firebase,Firebase Realtime Database,我想更改存储在列表中的日期格式。然后将该日期列表保存到firebase数据库。但我在格式化存储在日期列表中的日期时出错。 这是我的代码: MainActivity.java List<Date> dates = getDates(date1, date2); ArrayList<String> dateStringList = new ArrayList<>(); ArrayList<Date> dateList = new Arr

我想更改存储在列表中的日期格式。然后将该日期列表保存到firebase数据库。但我在格式化存储在日期列表中的日期时出错。 这是我的代码:

MainActivity.java

List<Date> dates = getDates(date1, date2);
    ArrayList<String> dateStringList = new ArrayList<>();
    ArrayList<Date> dateList = new ArrayList<Date>();
    SimpleDateFormat format1 =new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
    SimpleDateFormat format2 = new SimpleDateFormat("dd/MM/yyyy");
    for (Date date : dates) {
        String dateStr = String.valueOf(date);
        dateStringList.add(dateStr);
    }
    for (String dateString : dateStringList) {
        try {
            dateList.add(format1.parse(dateString));
            format2.format(dateList); ---> error here when formatting the date to format2
        } catch (ParseException e) {
            e.printStackTrace();
        }

    }

    String date1 = format2.format(dateList);
    dateModel data = new dateModel(dateList);
    mReference.child(id).setValue(data);
List dates=getDates(date1,date2);
ArrayList dateStringList=新建ArrayList();
ArrayList日期列表=新建ArrayList();
SimpleDataFormat 1=新的SimpleDataFormat(“EEE MMM dd HH:mm:ss zzz yyyy”);
SimpleDataFormat 2=新的SimpleDataFormat(“dd/MM/yyyy”);
用于(日期:日期){
String dateStr=String.valueOf(日期);
dateStringList.add(dateStr);
}
对于(字符串dateString:dateStringList){
试一试{
add(format1.parse(dateString));
format2.format(日期列表);-->将日期格式化为format2时此处出错
}捕获(解析异常){
e、 printStackTrace();
}
}
字符串date1=format2.format(日期列表);
dateModel数据=新的dateModel(日期列表);
mrreference.child(id).setValue(数据);
dateModel.java

public class dateModel {
ArrayList<Date> date;

public dateModel() {}

public dateModel(ArrayList<Date> date) {
    this.date = date;
}
public ArrayList<Date> getDate() {
    return date;
}

public void setDate(ArrayList<Date> date) {
    this.date = date;
} 
}
公共类数据模型{
ArrayList日期;
公共日期模型(){}
公共日期模型(ArrayList日期){
this.date=日期;
}
公共阵列列表getDate(){
返回日期;
}
公共作废设置日期(ArrayList日期){
this.date=日期;
} 
}
有办法解决这个问题吗?
非常感谢。

日期列表是一个数组列表。不能将arraylist格式化为日期

应该是


format2.format(dateString)

如果我理解正确,您的代码甚至无法编译

检查你的类型

format方法需要日期,而不是列表,我不明白为什么需要两种格式

List<Date> dates = getDates(date1, date2);
ArrayList<String> dateStringList = new ArrayList<>();

SimpleDateFormat fmt = new SimpleDateFormat("dd/MM/yyyy");

for (Date date : dates) {
    try {
        dateStringList.add(fmt.format(date));
    } catch (ParseException e) {
        e.printStackTrace();
    }

}

dateModel data = new dateModel(dateList);
mReference.child(id).setValue(data);
List dates=getDates(date1,date2);
ArrayList dateStringList=新建ArrayList();
SimpleDataFormat fmt=新的SimpleDataFormat(“日/月/年”);
用于(日期:日期){
试一试{
dateStringList.add(格式(日期));
}捕获(解析异常){
e、 printStackTrace();
}
}
dateModel数据=新的dateModel(日期列表);
mrreference.child(id).setValue(数据);

请注意,除了“目视检查”之外,将列表保存为字符串可能不是一个好主意。在我看来,格式化日期和时间是UI的职责,在某些情况下,存储毫秒(
date.getTime()
)更容易查询和过滤

dateList
是一个ArrayList,只放一个date string对象注意:所有的类都应该以java的大写字母开头顺便说一下,你应该能够直接将
ArrayList
写入Firebase,而无需自定义类我想如果我想格式化日期,首先要做的是将其转换为字符串,并在列表日期中对其进行解析。所以我使用两种不同的格式。但现在,我明白了,只要用字符串格式化它,它是否可以工作。非常感谢你的帮助和回答@板球队