Deux dates sont comparant mais le temps ne se compare pas correctement. Ceci est mon code
final String setdate = cursor.getString(cursor.getColumnIndex(cursor.getColumnName(4))); final String settime = cursor.getString(cursor.getColumnIndex(cursor.getColumnName(5))); Calendar calendar1 = Calendar.getInstance(); SimpleDateFormat formatter1 = new SimpleDateFormat("dd/M/yyyy"); String currentDate = formatter1.format(calendar1.getTime()); Calendar calendar2 = Calendar.getInstance(); SimpleDateFormat formatter2 = new SimpleDateFormat("h:mm"); String currentTime = formatter2.format(calendar2.getTime()); if(currentDate.compareTo(setdate)>=0) { if(currentTime.compareTo(settime)>=0) { myCheckBox.setChecked(true); myCheckBox.setEnabled(false); } }
6 Réponses :
très simple. Convertissez à la fois la valeur de valeur1 et TIME2 en milliseconde ou à la différence Minute et Mesaure. P>
ou strong> p>
Ce lien pour fonction a > pourrait vous aider. Bonne chance. P>
en Java Il existe une méthode que vous pouvez comparer deux date et heure
car vous devez formater votre format de date et heure à la date au format Java. P>
Après cela utilise ci-dessous Code P >
date1.compareTo(date2);
Je pense que vous demandez comment composer une date d'heure à partir de deux champs de date et de temps distincts. C'est assez simple. Vous pouvez utiliser votre SimpleDateDormat code> pour le faire:
final String dateString = cursor.getString(4);
final String timeString = cursor.getString(5);
SimpleDateFormat sdf = new SimpleDateFormat("dd/M/yyyy h:mm");
Date dbDate = sdf.parse(dateString + " " + timeString);
int compareToNow = new Date().compareTo(dbDate);
Comment comparer la date actuelle et l'heure actuelle de la date de comparaison de la date à ce qu'il est à l'heure à l'heure ressemblant si (date string.careto (Curdate)) {if (Timestring.compareto (CutTime) {// code}}
Une date de java code> est un horodatage. Il englobe à la fois une date et une heure. Si vous avez deux champs différents pour «date» et «heure» dans votre base de données, vous pouvez les transformer en une seule date Java
de la date code> à l'aide de la classe
SimpleDateDormat code> comme je l'ai fait ci-dessus. Par défaut, la création d'un
nouvelle date () code> Comme je l'ai fait ci-dessus crée une instance code> de la date code> définie sur l'heure actuelle du système. La dernière ligne de mon exemple compare donc l'horodatage actuel du système à la date à laquelle vous avez analysé vos champs de base de données.
Calendrier calendar1 = calendrier.getinstance (); SimpleDateFormat Formatter1 = Nouveau SimpleDateFormat ("DD / m / AAAAYY H: mm"); Chaîne couranteDate = Formatter1.Format (calendar1.gettime ()); Donnée finale String = curseur.Getstring (4); TIMESTRE DE STRING FINAL = curseur.getstring (5); String Datadb = Données + "" + Timestring; if (actuelDate.compareto (DataDB)> = 0) {myCheckbox.setchecked (vrai); mycheckbox.setenabled (false); }
Vous ne devez pas utiliser de chaînes pour comparer les dates. Vous constaterez que, par exemple, "01/12/2015" sort comme étant inférieur au "31/01/1979"
Calendar calendar1 = Calendar.getInstance(); SimpleDateFormat formatter1 = new SimpleDateFormat("dd/M/yyyy h:mm"); String currentDate = formatter1.format(calendar1.getTime()); final String dateString = cursor.getString(4); final String timeString = cursor.getString(5); String datadb =dateString+" "+timeString; // Toast.makeText(context,"databse date:-"+datadb+"Current Date :-"+currentDate,Toast.LENGTH_LONG).show(); if(currentDate.compareTo(datadb)>=0) { myCheckBox.setChecked(true); myCheckBox.setEnabled(false); }
Essayez ceci:
private boolean checktimings(String time, String endtime) { String pattern = "HH:mm"; SimpleDateFormat sdf = new SimpleDateFormat(pattern); try { Date date1 = sdf.parse(time); Date date2 = sdf.parse(endtime); if(date1.before(date2)) { return true; } else { return false; } } catch (ParseException e){ e.printStackTrace(); } return false; }
C'est une solution plus utile
public static boolean isTimeGreater(String date, String time) { Date currentTime, pickedTime; SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm"); String currentTimeString = sdf.format(new Date()); try { currentTime = sdf.parse(currentTimeString); pickedTime = sdf.parse(date + " " + time); Log.e("Ketan", "Current Date: " + currentTime); Log.e("Ketan", "Picked Date: " + pickedTime); /*compare > 0, if date1 is greater than date2 compare = 0, if date1 is equal to date2 compare < 0, if date1 is smaller than date2*/ if (pickedTime.compareTo(currentTime) > 0) { Log.e("Ketan", "Picked Date is Greater than Current Date"); return true; } else { Log.e("Ketan", "Picked Date is Less than Current Date"); return false; } } catch (ParseException e) { e.printStackTrace(); } return true; }