gpt4 book ai didi

java - 如何自动从 Firebase 中删除?

转载 作者:行者123 更新时间:2023-12-01 17:23:25 25 4
gpt4 key购买 nike

我编写了一个程序来从 firebase 中删除帖子。当 currentDate == 引用(“post”)时。 Child (postKey) .child ("date") 那么帖子应该被删除。检查通过每个(新线程)24小时我不明白为什么他没有得到帖子

private void deletePostFromFirebase(){
new Thread(new Runnable() {
@Override
public void run() {
while(true) {
try {
Thread.sleep(1000L*60L*60L*24L);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd MMM yyyy", Locale.ENGLISH);
Date date = new Date();
String newDate = simpleDateFormat.format(date);
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Posts");
ref.orderByChild("date").equalTo(newDate).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot itemSnapshot : dataSnapshot.getChildren()) {
itemSnapshot.getRef().removeValue();
}
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
throw databaseError.toException();
}
});
}catch (InterruptedException e){
showMessage(e.getMessage());
}
}
}
}).start();
}

我认为 firebase 中写入的日期 (post.child -> date ' 30 апр 2020') 是用俄语格式编写的,而我得到的当前日期是用 currentDate'30 april 2020 '英语格式编写的。我认为这是一个问题。有人可以向我解释一下这个问题还是还有其他问题。

enter image description here

最佳答案

如果您希望能够按日期排序/过滤,则需要确保这些日期以可排序/过滤的格式存储。

用于日期的 toString() 表示形式不是这样的格式,因为它的字典/字母排序顺序与其时间顺序不同。一些例子可以清楚地说明这一点:

  • 按照字典顺序,1 月 30 日 位于 2 月 28 日 之后,因为 3 > 2
  • 按照字典顺序,1 月 30 日 位于2 月 28 日 之后,因为 J > F

存储日期以便对它们进行排序/过滤的正确格式是:

  • 将它们存储为时间戳,即自纪元以来经过的毫秒数。由于这些是数值,因此可以按数字顺序(而不是按字典顺序)对它们进行排序和比较。
  • 以字符串格式存储它们,其中字典顺序与时间顺序相同,例如:“2020-04-16”。因为“2020-01-30” <“2020-02-28”

有关此内容的更多信息,请参阅:

关于java - 如何自动从 Firebase 中删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61250425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com