2011-11-04 1 views
1
SimpleDateFormat dateFormat = new SimpleDateFormat("mm/dd/yyyy"); 
Date date = dateFormat.parse("11/04/2011"); 
System.out.println(date); 
System.out.println(dateFormat.format(date)); 

Tue Jan 04 00:11:00 IST 2011 
11/04/2011 

Lorsque l'objet date est affiché en janvier au lieu de novembre. Mais lorsque vous formatez le même objet date, il s'affiche correctement en novembre. En faisant MM/jj/aaaa, le résultat est correct. Mais ne devrait pas le mm/jj/aaaa jette une exception de date incomparable si mm/jj/aaaa est poisson?comportement étrange de l'objet date

+0

« mm » minutes et « MM » pendant des mois. De même, "ss" pour les secondes et "SS" pour les millisecondes. –

Répondre

5

Erreur commune: mm is the pattern for minutes. Vous voulez utiliser MM pour analyser/imprimer le mois. Utilisez MM/dd/yyyy au lieu de mm/dd/yyyy.

Puisque vous la valeur analysez 11 dans la minute parties de la date et impression la minute partie de la date, en premier lieu, le résultat de dateFormat.format(date)ressemble correcte.

+0

merci. J'ai été stupide :) – Harshana

4

mm/dd/yyyy changement à MM/dd/yyyy

Date de la lettre ou de composants Temps Présentation Exemples

M Month in year Month July; Jul; 07 

m Minute in hour Number 30 

Voir

1

Veuillez noter que la date est obsolète. Vous devriez utiliser la classe Calendar à la place.

+1

Je vais aussi loin que de vous proposer d'utiliser Joda-Time. Il prend la peine d'avoir à travailler avec des dates en java. –