Afficher des heures: 36:00 et non pas: 02:00

Résolu/Fermé
moi411 Messages postés 179 Date d'inscription samedi 22 novembre 2003 Statut Membre Dernière intervention 25 juin 2017 - 17 juil. 2015 à 23:24
moi411 Messages postés 179 Date d'inscription samedi 22 novembre 2003 Statut Membre Dernière intervention 25 juin 2017 - 18 juil. 2015 à 07:43
Bonjour,
Comme dit dans le titre je n'arriva pas à afficher le nombre exacte d'heures (après un calcul)...
Systématiquement, il convertit en jour:heures:minutes etc. alors que je voudrais simplement heures:minutes (même si ça doit afficher 1000:00)!

Voici mon code:

try 
{		
	SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm");		
	Date maDate = dateFormat.parse("10:10");
	Calendar cal = Calendar.getInstance();

        cal.setTime(maDate);
	cal.add(Calendar.HOUR, 16);
        cal.add(Calendar.MINUTE, 120);
	Date result = cal.getTime();

	System.out.println(dateFormat.format(result));			
}
catch (ParseException e) 
{
	// TODO Auto-generated catch block
	e.printStackTrace();
}


Affichage: 02:00 alors que je voudrais afficher 28:10.

En espérant que JAVA permette ce genre de chose, sinon il me reste la bonne vielle méthode "diviser par 60"!!!
Je vous remercie d'avance...




--
A voir également:

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
18 juil. 2015 à 00:53
Bonjour,

C'est normal qu'il passe au jour suivant puisque tu travailles sur des dates.
Sémantiquement parlant, une date ne peut pas avoir plus de 24h...

Une date c'est un instant sur la ligne temporelle, à ne pas confondre avec le temps qu'il y a entre deux dates et qui constitue la "distance" entre deux instants de la ligne temporelle.
Si tu veux afficher 28h10 ce n'est plus une date, mais bien du temps...

Alors il y a des bibliothèques de gestion du temps, notamment Joda Time (qui est désormais intégré à Java depuis la version 8), mais la méthode "diviser par 60" est plus simple et tout à fait justifiée ici puisque tu travailles sur du temps.

import java.time.Instant;
import java.time.temporal.ChronoUnit;

public class TestJava8 {

	public static void main(String[] args) {
		Instant now = Instant.now();
		Instant christmas = Instant.parse("2015-12-25T00:00:00.00Z");
		long hours = now.until(christmas, ChronoUnit.HOURS);
		Instant temp = now.plus(hours, ChronoUnit.HOURS);
		long minutes = temp.until(christmas, ChronoUnit.MINUTES);
		System.out.println(hours + ":" + minutes);
	}
}
import java.util.Date;

public class TestOldJava {

	public static void main(String[] args) {
		long now = new Date().getTime();
		long christmas = Date.UTC(115, 11, 25, 0, 0, 0);
		long temp = (christmas - now) / (60 * 1000);
		long hours = temp / 60;
		long minutes = temp % 60;
		System.out.println(hours + ":" + minutes);
	}
}
0
moi411 Messages postés 179 Date d'inscription samedi 22 novembre 2003 Statut Membre Dernière intervention 25 juin 2017 2
18 juil. 2015 à 07:43
Hello,
"...mais la méthode "diviser par 60" est plus simple et tout à fait justifiée ici puisque tu travailles sur du temps..."

En fait c'est ce que j'ai fait mais je pensais qu'utiliser une classe toute prête serai plus facile/rapide... J'ai encore l'habitude C# où tout (ou presque) est automatisé!!!

Bref, encore merce et bon week-end...
0