2013-08-26 6 views
0

je crée une date et le format est comme ceci:Comparaison des dates formatées

Exemple 1:

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss dd/MM/yyyy"); 
        String currentDate = sdf.format(new Date()); 

Ce que je voudrais faire est de vérifier si cette date est avant une autre date (aussi formaté de la même manière). Comment ferais-je cela?

Exemple 2:

Aussi, comment pourrais-je vérifier si l'un d'entre eux est une autre avant:

long setForLong = System.currentTimeMillis() + (totalTime*1000); 
String display = (String) DateFormat.format("HH:mm:ss dd/MM/yyyy", setForLong); 

EDIT:

Je pense que plus en détail est nécessaire. Je crée une date de deux manières différentes pour deux utilisations différentes. La première utilisation formate simplement la date en cours dans une chaîne afin qu'elle soit lisible pour l'utilisateur. Dans le second cas, j'utilise une date dans le futur avec System.currentTimeMillis et l'ajout d'un long. Les deux résultent en une chaîne.

Les deux méthodes mettent en forme la date exactement de la même manière et les chaînes sont TextView. Plus tard, j'ai besoin de comparer ces dates. Je n'ai pas les données d'origine/date/etc, seulement ces chaînes. Parce qu'ils sont formatés de la même manière, je pense qu'il serait facile de les comparer.

J'ai essayé la méthode if(String1.compareTo(String2) >0), mais cela ne fonctionne pas si le jour est changé.

Répondre

0

Si vous avez seulement deux objets qui sont String dates à votre disposition. Vous devrez les traiter dans quelque chose, soit dans votre propre classe de comparaison, soit dans un autre objet. Dans ce cas, étant donné que ceux-ci sont déjà formatés en dates, vous pouvez simplement créer des objets Date et les comparer en utilisant les méthodes précédemment publiées. Quelque chose comme ceci:

String string = "05:30:33 15/02/1985"; 
Date date1 = new SimpleDateFormat("HH:mm:ss dd/MM/yyyy", Locale.ENGLISH).parse(string); 

String string2 = "15:30:33 01/02/1985"; 
Date date2 = new SimpleDateFormat("HH:mm:ss dd/MM/yyyy", Locale.ENGLISH).parse(string2); 

if(date1.getTime()>date2.getTime()) { 
    //date1 greater than date2 
} 
else if(date1.getTime()<date2.getTime()) { 
    //date1 less than date2 
} 
else { 
    //date1 equal to date2 
} 
+0

Merci pour la réponse. Cela fonctionnera-t-il dans différents fuseaux horaires? – RiThBo

+0

Je pense que ce sera le cas si j'utilise Locale.getDefault(). – RiThBo

+1

Oui cela vous donnera le 'Locale' actuel de l'utilisateur. – Nick

1

Vous devriez utiliser Calendar pour comparer facilement les dates.

Calendar c1 = Calendar.getInstance(); 
c1.setTime(Date someDate); 
Calendar c2 = Calendar.getInstance(); 
c2.setTime(Date anotherDate); 
if(c1.before(c2)){ 
    // do something 
} 

Et vous pouvez formater à tout moment

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss dd/MM/yyyy"); 
String currentDate = sdf.format(c1.getTime()); 
+0

Merci, mais je dois être en mesure de formater la date afin qu'il soit lisible par l'utilisateur. – RiThBo

+0

J'ai modifié la question avec un autre exemple. Cette méthode fonctionne bien pour le premier exemple – RiThBo

+0

J'ai également ajouté des détails/contexte pour essayer d'aider à la compréhension. Merci de prendre l'intérêt :-) – RiThBo