Voici le code, pour votre plus grand plaisir:Résultats inattendus lorsque vous soustrayez les dates
public static void main(String[] args) throws Exception {
Calendar cal = Calendar.getInstance();
cal.set(2010, Calendar.JULY, 10, 1, 0, 20);
Date d1 = cal.getTime();
Date d2 = new Date();
int seconds = 22;
d2.setTime(d1.getTime() - seconds*1000);
SimpleDateFormat iso_format = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");
System.out.println(iso_format.format(d1) + " - " + seconds + "s = " + iso_format.format(d2));
}
Sortie: 2010-07- 10 01:00:20 - 22s = 2010-07- 24 : 59: 58
La réponse ne devrait-elle pas être 2010-07- 24:59:58? Pourquoi revient-il au même jour? Y a-t-il un moyen de le réparer?
meilleure question: pourquoi il ne 2010-07-10 00:59:58 (22 secondes avant 01:00:20) – DennyRolling
@High: lorsque vous utilisez le spécificateur de format 'K', l'heure champ ∈ '[1,24]' pas '[0, 23]'. –
Pourquoi dans le monde quelqu'un voudrait-il un spécificateur de format d'heure qui soit ∈ [1,24]? –