Android比较日期时间

Android比较日期时间,android,datetime,Android,Datetime,我试着比较两个约会时间,但我无法让它起作用 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,

我试着比较两个约会时间,但我无法让它起作用

    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();
        }
    }
    }
  • 两个时间值的毫秒数不同,因此相等性比较将返回false

  • 为什么要向两个日历实例都添加0天?那没什么用

  • public void onDateSelected(DateTime dateSelected){
    DateTime currentDateTime=新的日期时间();
    试一试{
    /*如果只想比较date from DateTime对象的日期,
    您可以使用“yyyy-MM-dd”格式并从T中拆分字符串,如:
    dateSelected.toString().split(“T”)并使用str1[0]解析*/
    SimpleDataFormat格式化程序=新的SimpleDataFormat(“yyyy-MM-dd'T'HH:MM:ss.SSSZZZZ”);
    字符串str1=dateSelected.toString();
    日期selectedDate=formatter.parse(str1);
    字符串str2=currentDateTime.toString();
    Date currentDate=formatter.parse(str2);
    
    如果(selectedDate.compareTo)(currentDate),为什么不同的c11和c12的值都设置为相同?不,它们不相同。正如我刚才所说,毫秒是不同的。您需要将两者的毫秒设置为0。现在,毫秒设置为调用Calendar.getInstance()时的当前时间好的,那么还有其他方法可以比较这两个吗?Java日期和日历对象总是包含毫秒。您需要执行以下操作:c11.set(Calendar.millis秒,0);c12.set(Calendar.millis秒,0);然后相等比较将返回true。我们可以将格式作为此函数的参数发送以使其更通用吗?public void onDateSelected(DateTime dateSelected,String format){SimpleDateFormat formatter=new SimpleDateFormat(format);…}是的,您可以这样做:)谢谢Shujat,这将有所帮助
     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();
        }
     }