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

时间:2017-08-24 02:56:38

标签: java android date firebase firebase-realtime-database

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

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);

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;
} 
}

有没有办法解决这个问题? 非常感谢你..

2 个答案:

答案 0 :(得分:0)

datelist是一个ArrayList。您无法将arraylist格式化为日期。

应该是

format2.format(dateString)

答案 1 :(得分:0)

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

检查您的类型。

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

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);

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