【问题标题】:Android compare datetimeAndroid比较日期时间
【发布时间】:2011-01-21 20:00:54
【问题描述】:

我正在尝试比较两个日期时间,但无法正常工作。

    public void time () {
        Calendar c11 = Calendar.getInstance ();
        c11.add(Calendar.DAY_OF_YEAR, 0);
        c11.set(Calendar.HOUR_OF_DAY, 9);
        c11.set(Calendar.MINUTE, 0 );
        c11.set(Calendar.SECOND, 0);

        Calendar c12 = Calendar.getInstance ();
        c12.add(Calendar.DAY_OF_YEAR, 0);
        c12.set(Calendar.HOUR_OF_DAY, 9);
        c12.set(Calendar.MINUTE, 0 );
        c12.set(Calendar.SECOND, 0);

        c11.getTime();
        c12.getTime();
        boolean k = c11.equals(c12);
        if (k==true)
        {
            Toast.makeText(
              getContext(),
              "Wow these two times are the same!",
              Toast.LENGTH_LONG).show();
        }
    }
    }

【问题讨论】:

    标签: android datetime


    【解决方案1】:
    1. 两个时间值的毫秒数不同,因此相等比较将返回 false。

    2. 为什么要向两个日历实例添加 0 天?这没有任何作用。

    【讨论】:

    • 为什么不同的值c11和c12都设置成一样?
    • 不,它们不一样。就像我刚才说的,毫秒是不同的。您需要将它们的毫秒数都设置为 0。现在,毫秒设置为您调用 Calendar.getInstance() 时的当前时间
    • 对了,还有其他方法可以比较这两者吗?
    • Java 日期和日历对象总是包含毫秒。您需要执行以下操作: c11.set(Calendar.MILLISECOND, 0); c12.set(日历.MILLISECOND, 0);然后相等比较将返回 true。
    【解决方案2】:
     public void onDateSelected(DateTime dateSelected) {
        DateTime currentDateTime = new DateTime(); 
    
        try{
            /* If you want to compare only date from DateTime object then,
               you can use "yyyy-MM-dd" format and split the string from T like: 
               dateSelected.toString().split("T") and use str1[0] to parse */  
    
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ");
    
            String str1 = dateSelected.toString();
            Date selectedDate = formatter.parse(str1);
    
            String str2 = currentDateTime.toString();
            Date currentDate = formatter.parse(str2);
    
            if (selectedDate.compareTo(currentDate)<0)
            {
                System.out.println("current date is Greater than my selected date");
            }
    
        }catch (ParseException e1){
            e1.printStackTrace();
        }
     }
    

    【讨论】:

    • 我们可以将格式作为参数发送给这个函数以使其更通用吗? public void onDateSelected(DateTime dateSelected, String format){ SimpleDateFormat formatter = new SimpleDateFormat(format); ... }
    • 是的,你可以这样做:)
    • 感谢 Shujat,它会有所帮助
    猜你喜欢
    • 2021-09-20
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2015-07-20
    • 2012-12-29
    • 2016-10-10
    • 2011-04-28
    相关资源
    最近更新 更多