Сравните две строки даты и времени в Android?

У меня есть две строки Datetime следующим образом:

String Date1 = "05-09-2013 10:46:10"
String Date2 = "06-09-2013 10:46:10"

Мне нужно сравнить эти даты и время, и мне нужен результат.


person user2688507    schedule 10.09.2013    source источник
comment
привет, если это решило вашу проблему, не могли бы вы пометить ответ как принятый, пожалуйста?   -  person ASP    schedule 19.09.2013


Ответы (7)


Вы можете использовать следующее:

    public static boolean CheckDates(String startDate, String endDate) {

    SimpleDateFormat dfDate = new SimpleDateFormat("dd-MMM-yyyy");

    boolean b = false;

    try {
        if (dfDate.parse(startDate).before(dfDate.parse(endDate))) {
            b = true;  // If start date is before end date.
        } else if (dfDate.parse(startDate).equals(dfDate.parse(endDate))) {
            b = true;  // If two dates are equal.
        } else {
            b = false; // If start date is after the end date.
        }
    } catch (ParseException e) {
        e.printStackTrace();
    }

    return b;
}
person Ritesh Gune    schedule 10.09.2013

String pattern = "dd-MM-yyyy HH:mm:ss";
SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
Date one = dateFormat.parse(Date1String);
Date two = dateFormat.parse(Date2String);

Теперь у вас есть два объекта Date, вы можете их сравнить.

person Vishal Pawale    schedule 10.09.2013
comment
String pattern = "dd-MM-yyyy "; SimpleDateFormat dateFormat = new SimpleDateFormat(pattern); try { Date one = dateFormat.parse("2018-04-11"); Date two = dateFormat.parse("2018-04-10"); Log.e(" Date 1 - Date 2", "" + one.compareTo(two)); } catch (ParseException e) { e.printStackTrace(); } в one.compareTo(two), если обе даты совпадают, то он вернет 0, если одна больше 1, и -1 в другом случае. @УмарАта - person other Tall guy; 11.04.2018
comment
Не могли бы вы добавить свой комментарий в свой ответ, чтобы сделать его полностью понятным - person Umar Ata; 11.04.2018

Вы можете преобразовать строку в дату следующим образом:

    String str = "12/12/1912";
   SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
   Date date = formatter.parse(str);

И вернемся к строке

    SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
   System.out.println("Date is : " + formatter.format(date));

А у Date есть методы «до» и «после», и их можно сравнивать друг с другом.

Кстати есть еще библиотека под названием Joda, ее тоже можно глянуть.

person Pratik Dasa    schedule 10.09.2013

Попробуйте время Joda для достижения наилучшего результата. Его очень просто использовать.

person ASP    schedule 10.09.2013

этот фрагмент объясняет, когда мы сравниваем две даты в строковых форматах, другими словами, до даты не допускаются, когда больше, чем от даты.

 private void setTodate() {
            // TODO Auto-generated method stub
            // Process to get Current Date
            int fYear, fMonth, fDay;
            final Calendar c = Calendar.getInstance();
            fYear = c.get(Calendar.YEAR);
            fMonth = c.get(Calendar.MONTH);
            fDay = c.get(Calendar.DAY_OF_MONTH);
            // Launch Date Picker Dialog
            DatePickerDialog dpd = new DatePickerDialog(RemindMeDetails.this,
                    new DatePickerDialog.OnDateSetListener() {
                        @SuppressLint("SimpleDateFormat")
                        @Override
                        public void onDateSet(DatePicker view, int year,
                                int monthOfYear, int dayOfMonth) {                  
                        try{                        
                            SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");        
                            String fdate=recr_edit_Fromdate.getText().toString();                       
                            Date dateFD = formatter.parse(fdate);                       
                            String tdate=(dayOfMonth + "-"
                                    + (monthOfYear + 1) + "-" + year).toString();
                            Date dateTD = formatter.parse(tdate);                       
                            if (dateFD.compareTo(dateTD)<=0)
                              {
                                /* System.out.println("tdate is Greater than my fdate");  
                                 recr_edit_Todate.setText(dayOfMonth + "-"
                                            + (monthOfYear + 1) + "-" + year);*/
                                recr_edit_Todate.setText(tdate);
                              }
                            else{
                                showmessage("Alert", "Start date is not greater than End date");                            
                        }catch (ParseException e1){
                            e1.printStackTrace();
                        }   
                        }
                    }, fYear, fMonth, fDay);
            dpd.show();
        }// method closed
person venki    schedule 16.12.2014

Простой код

fun CompareDates(str_date1:String,str_date2:String):Int {
    lateinit var date1:Date
    lateinit var date2:Date

    if (!str_date1.isEmpty()&&!str_date2.isEmpty()) {
        val formatter = SimpleDateFormat("dd/MM/yyyy")
        date1 = formatter.parse(str_date1)
        date2 = formatter.parse(str_date2)
    }

    return date1.compareTo(date2)
}

Тип возвращаемого значения Int

if (CompareDates() > 0) {
 // comes when date1 is higher then date2
} else {
 // comes when date2 is higher then date1
}
person Sandeep Pareek    schedule 10.03.2021

Попробуй это,

String pattern = "<yourPattern>";
SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
try {
 Date one = dateFormat.parse(<yourDate>);
 Date two = dateFormat.parse(<yourDate>);

}
catch (ParseException e) {}
person shiju B    schedule 10.09.2013