如果值(日期)<当前时间日期,则需要删除子项(postkey)
Calendar calFordDate;
calFordDate = Calendar.getInstance();
SimpleDateFormat currentDate = new SimpleDateFormat("dd/MM/yyyy");
String CurrentDate = currentDate.format(calFordDate.getTime());
PostsRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String tripdate = dataSnapshot.child(postkey).child("date").getValue().toString();
if(CurrentDate.after(tripdate)) {
dataSnapshot.getRef().removeValue();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
最佳答案
您的答案中的错误是由于 tripdate
是一个字符串而不是 Date
对象。要将字符串转换为日期,您可以使用如下代码:
String dtStart = "2010-10-15T09:27:37Z";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
try {
Date date = format.parse(dtStart);
System.out.println(date);
} catch (ParseException e) {
e.printStackTrace();
}
当您不知道值时,如果要从 Firebase 数据库中删除子项,则必须使用如下代码来完成:
DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
Query delQuery = ref.child("Posts").orderByChild("date").equalTo(DateYouKnowIsThere);
delQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot dSnapshot: dataSnapshot.getChildren()) {
dSnapshot.getRef().removeValue();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.e(TAG, "onCancelled", databaseError.toException());
}
});
关于java - 如何在 firebase 数据库上的某个日期之后删除子节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52905013/