En effet grosse erreur!
voici la reponse:
Salut,
Une [B]durée [/B]n'est pas une [B]date [/B]! Cela n'a même rien à voir...
Lorsque tu fais :
Code :
- Calendar c = Calendar.getInstance();
- c.setTimeInMillis(100000);
|
Tu crée une date correspondant au 1er janvier 1970 00:01:40 à l'heure GMT.
Mais cette date correspond à autre chose selon le fuseau horaire d'où ton problème...
A la rigueur tu pourrais utiliser le TimeZone GMT pour récupérer l'heure :
Code :
- public static String convertFromMillisToTime(long timeInMSec, String pattern) {
- Calendar c = Calendar.getInstance();
- c.setTimeInMillis(timeInMSec);
- DateFormat df = new SimpleDateFormat(pattern);
- df.setTimeZone(TimeZone.getTimeZone("GMT" ));
- return df.format(c.getTime());
- }
|
Seulement ce n'est pas une solution très propre, déjà car elle t'empêche de dépasser les 24h, et ensuite car les Calendars gèrent également des règles qui font que certaines journées "durent plus longtemps" d'une seconde...
Tout cela n'a rien à voir avec une durée...
Il serait bien plus prudent de calculer cela toi même :
Code :
- public static String convertFromMillisToTime(long timeInMSec, String pattern) {
- long millisecondes = timeInMSec;
- long secondes = millisecondes/1000L;
- millisecondes -= secondes*1000L;
- long minutes = secondes/60L;
- secondes -= minutes*60L;
- long heures = minutes/60L;
- minutes -= heures*60L;
- return String.format("%02d:%02d:%02d", heures, minutes, secondes);
- }
|
Ou encore mieux : tu peux utiliser la méthode DurationFormatUtils.formatDuration() des Jakarta Commons Lang...
a++
Message édité par PETOZAK le 23-02-2007 à 14:36:49