Java 错误:将日期格式化为新格式(Android)时,无法将给定对象格式化为日期
我想更改存储在列表中的日期格式。然后将该日期列表保存到firebase数据库。但我在格式化存储在日期列表中的日期时出错。 这是我的代码: MainActivity.javaJava 错误:将日期格式化为新格式(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
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,而无需自定义类我想如果我想格式化日期,首先要做的是将其转换为字符串,并在列表日期中对其进行解析。所以我使用两种不同的格式。但现在,我明白了,只要用字符串格式化它,它是否可以工作。非常感谢你的帮助和回答@板球队