Salut, j'essaie de comparer une date entrée par l'utilisateur (sous forme de chaîne) avec la date actuelle afin de savoir si la date est antérieure ou antérieure.
Mon code actuel est
String date;
Date newDate;
Date todayDate, myDate;
SimpleDateFormat dateFormatter = new SimpleDateFormat("dd-MM-yyyy");
while(true)
{
Scanner s = new Scanner (System.in);
date = s.nextLine();
Calendar cal = Calendar.getInstance();
try {
// trying to parse current date here
// newDate = dateFormatter.parse(cal.getTime().toString()); //throws exception
// trying to parse inputted date here
myDate = dateFormatter.parse(date); //no exception
} catch (ParseException e) {
e.printStackTrace(System.out);
}
}
Im essayant d'obtenir à la fois la date d'entrée utilisateur et la date actuelle dans deux objets Date, afin que je puisse utiliser Date.compareTo () pour simplifier la comparaison des dates.
J'ai pu analyser la chaîne d'entrée utilisateur dans l'objet Date. Cependant, la date actuelle cal.getTime (). ToString () n'analyse pas l'objet Date car il s'agit d'une chaîne non valide.
Comment s'y prendre? Merci d'avance
Vous pouvez obtenir le Date
actuel avec:
todayDate = new Date();
EDIT: Puisque vous devez comparer les dates sans tenir compte de la composante horaire, je vous recommande de voir ceci: Comment comparer deux dates sans la partie temporelle?
Malgré la "mauvaise forme" de la seule réponse, je l'aime bien:
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
sdf.format(date1).equals(sdf.format(date2));
Dans votre cas, vous avez déjà:
SimpleDateFormat dateFormatter = new SimpleDateFormat("dd-MM-yyyy");
donc je considérerais (pour plus de simplicité que de performance):
todayDate = dateFormatter.parse(dateFormatter.format(new Date() ));
Voici le code pour vérifier si la date-heure donnée est plus grande que la méthode Present Date-time.Below prend la chaîne de date-heure pertinente comme argument et renvoie true si fourni la date-heure est plus grande que la date-heure actuelle . #thmharsh
private boolean isExpire(String date){
if(date.isEmpty() || date.trim().equals("")){
return false;
}else{
SimpleDateFormat sdf = new SimpleDateFormat("MMM-dd-yyyy hh:mm:ss a"); // Jan-20-2015 1:30:55 PM
Date d=null;
Date d1=null;
String today= getToday("MMM-dd-yyyy hh:mm:ss a");
try {
//System.out.println("expdate>> "+date);
//System.out.println("today>> "+today+"\n\n");
d = sdf.parse(date);
d1 = sdf.parse(today);
if(d1.compareTo(d) <0){// not expired
return false;
}else if(d.compareTo(d1)==0){// both date are same
if(d.getTime() < d1.getTime()){// not expired
return false;
}else if(d.getTime() == d1.getTime()){//expired
return true;
}else{//expired
return true;
}
}else{//expired
return true;
}
} catch (ParseException e) {
e.printStackTrace();
return false;
}
}
}
public static String getToday(String format){
Date date = new Date();
return new SimpleDateFormat(format).format(date);
}
public void onDataChange(DataSnapshot dataSnapshot) {
// This method is called once with the initial value and again
// whenever data at this location is updated.
for(DataSnapshot dataSnapshot1 :dataSnapshot.getChildren()){
SimpleDateFormat sdf1234 = new SimpleDateFormat("dd-MM-yyyy hh:mm a");
String abs12 = value.getExpiryData();
Date todayDate = new Date();
try {
Date testDate1 = sdf1234.parse(abs12);
if(testDate1.compareTo(todayDate) <0){// expired
dataSnapshot1.getRef().removeValue();
}
else if(testDate1.compareTo(todayDate)==0){// both date are same
if(testDate1.getTime() == todayDate.getTime() || testDate1.getTime() < todayDate.getTime())
{// expired
dataSnapshot1.getRef().removeValue();
}
else
{//expired
//Toast.makeText(getApplicationContext(),"Successful praju ",Toast.LENGTH_SHORT).show();
}
}else{//expired
// Toast.makeText(getApplicationContext(),"Successful praju ",Toast.LENGTH_SHORT).show();
}
} }
Tu peux le faire.
// Make a Calendar whose DATE part is some time yesterday.
Calendar cal = Calendar.getInstance();
cal.roll(Calendar.DATE, -1);
if (myDate.before(cal.getTime())) {
// myDate must be yesterday or earlier
} else {
// myDate must be today or later
}
Peu importe que cal
ait une composante temporelle, car myDate
n'en a pas. Ainsi, lorsque vous les comparez, si cal
et myDate
sont à la même date, le composant time fera cal
plus tard que myDate
, quelle que soit l'heure composant est.
La création d'une nouvelle date () vous donnera un objet Date avec la date actuelle.
donc:
Date currentDate = new Date();
fera le travail
Fomat ne se conforme pas comme prévu.
Calendar cal = Calendar.getInstance();
System.out.println(cal.getTime().toString());
sortie: ven nov 01 13:46:52 EET 2013