9
votes

Comment comparer deux fois à Android

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);


               }

           }


0 commentaires

6 Réponses :


0
votes

très simple. Convertissez à la fois la valeur de valeur1 et TIME2 en milliseconde ou à la différence Minute et Mesaure.

ou

Ce lien pour fonction pourrait vous aider. Bonne chance.


0 commentaires

-1
votes

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);


0 commentaires

0
votes

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);


4 commentaires

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 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 à l'aide de la classe SimpleDateDormat comme je l'ai fait ci-dessus. Par défaut, la création d'un nouvelle date () Comme je l'ai fait ci-dessus crée une instance de la date 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"



9
votes
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);
}

0 commentaires

23
votes

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;
}


1 commentaires

C'est une solution plus utile



0
votes
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;
}

0 commentaires