首页 > 解决方案 > 如何比较新日期是否在android中的旧日期之后

问题描述

我正在尝试查看如何比较新日期是否在旧日期之后,如果这样的话,firebase 数据库中不会显示任何数据。我遇到了麻烦,因为我的应用程序在测试时崩溃了,我相信我做错了。有人可以帮我解决这个问题吗?下面是我的代码。提前致谢

 //Code
    
    if(dataSnapshot.exists()){
                        //progressBar.setVisibility(View.GONE);



                        for (DataSnapshot postsnapshot : dataSnapshot.getChildren()) {


                            UserInformation2 upload=postsnapshot.getValue(UserInformation2.class);


                            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("M-dd-yyyy");
                            //String now = simpleDateFormat.format(new Date());

                           Date d=new Date();
                            String AdCreationDate = postsnapshot.child("created").getValue(String.class);
                            //SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd")

                            try {

                                Date new_date = simpleDateFormat.parse(String.valueOf(d));
                                Date old_date = simpleDateFormat.parse(AdCreationDate);


                                if(new_date.after(old_date)){
                                    // Your time expired do your logic here.
                                    Toast.makeText(getContext(), "Your data expired", Toast.LENGTH_SHORT).show();
                                }else{
                                    myUploads.add(upload);

                                    recyclerView.invalidate();
                                }

                            } catch (ParseException e) {
                                e.printStackTrace();
                            }

                            //simpleDateFormat.format(d);
                           //Date e=new Date(old);












                        }

                        linearLayoutWithoutItems.setVisibility(View.GONE);
                        recyclerView.setVisibility(View.VISIBLE);

堆栈跟踪

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.myapp.tout, PID: 22667
    java.lang.IllegalArgumentException
        at java.util.Date.parse(Date.java:638)

标签: androidfirebase

解决方案


看起来错误实际上与

Date new_date = simpleDateFormat.parse(String.valueOf(d));

如果您注释掉该行,然后将 if 语句更新为

if(d.after(old_date)){

您不需要解析新日期,因为它已经是一个 Date 对象。您只需要解析快照中的日期,因为它是一个字符串。

我还将新的日期变量更改d为更有意义的东西,因为它有助于代码的可读性,并且命名变量的 Java 标准是使用驼峰式大小写,其中第二个单词大写,没有下划线,即“oldDate”。养成遵循这些约定的习惯是件好事。


推荐阅读