J'essaie d'afficher la différence entre deux dates, réparties en mois, jours, heures, minutes et secondes. Le code ci-dessous semble fonctionner, sauf que les heures sont toujours décalées de 4. J'ai essayé HEURE et HOUR_OF_DAY, mais j'ai obtenu les mêmes résultats.Les heures sont désactivées par 4
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
int hour = cal.get(Calendar.HOUR);
int minutes = cal.get(Calendar.MINUTE);
int seconds = cal.get(Calendar.SECOND);
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
try {
//get the current date/time
Date beginDate = cal.getTime();
//fabricate a future date/time
Date endDate = dateFormat.parse(String.valueOf(year) + "-" + String.valueOf(month)
+ "-" + String.valueOf(day+95) + " " + String.valueOf(hour+2)
+ ":" + String.valueOf(minutes +16) + ":" + String.valueOf(seconds +34));
long millis = endDate.getTime() - beginDate.getTime();
TextView txtMonths = (TextView) findViewById(R.id.months);
txtMonths.setText("Months: " + (new SimpleDateFormat("M")).format(new Date(millis)));
TextView txtDays = (TextView) findViewById(R.id.days);
txtDays.setText("Days: " + (new SimpleDateFormat("d")).format(new Date(millis)));
TextView txtHours = (TextView) findViewById(R.id.hours);
txtHours.setText("Hours: " + (new SimpleDateFormat("h")).format(new Date(millis)));
TextView txtMinutes = (TextView) findViewById(R.id.minutes);
txtMinutes.setText("Minutes: " + (new SimpleDateFormat("m")).format(new Date(millis)));
TextView txtSeconds = (TextView) findViewById(R.id.seconds);
txtSeconds.setText("Seconds: " + (new SimpleDateFormat("s")).format(new Date(millis)));
} catch (ParseException ex) {
Log.d("ParseException", ex.toString());
}
Il a été suggéré que c'était à cause de TimeZone. Je suis GMT et DST = +8 vrai, alors
TimeZone timeZone = cal.getTimeZone();
timeZone.getOffset(System.currentTimeMillis()));
Retours 7 heures non 4. Suis-je manque quelque chose avec des informations TimeZone?
Vous ne tenez pas compte des fuseaux horaires, j'imagine. – CommonsWare
Vérifiez que le fuseau horaire n'est pas le problème. Régulièrement au large de 4 heures semble être le cas. – Sami
Oui, fuseau horaire. Merci. Je suis GMT +8. Je me demande où il se présente avec 4. – user1091524