66 votes

java.util.Date et getYear()

J'ai le problème suivant en Java (je vois que certaines personnes ont un problème similaire en JavaScript mais j'utilise Java)

 System.out.println(new Date().getYear());
System.out.println(new GregorianCalendar().getTime().getYear());
System.out.println(this.sale.getSaleDate().getYear());
System.out.println(this.sale.getSaleDate().getMonth());
System.out.println(this.sale.getSaleDate().getDate());

Retour

 I/System.out( 4274): 112
I/System.out( 4274): 112
I/System.out( 4274): 112
I/System.out( 4274): 1
I/System.out( 4274): 11

Je ne comprends pas le 112 bits que je pensais avoir été 2012. Ce qui se passe? Est le java.util.Date classe inutilisable ? Je stocke cela en tant que champ dans plusieurs de mes cours pour mémoriser une date et une heure. Que dois-je faire?

101voto

fasholaide Points 1179

En plus de tous les commentaires, j'ai pensé que je pourrais ajouter du code sur la façon d'utiliser java.util.Date, java.util.Calendar et java.util.GregorianCalendar selon le javadoc .

 //Initialize your Date however you like it.
Date date = new Date();
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
int year = calendar.get(Calendar.YEAR);
//Add one to month {0 - 11}
int month = calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DAY_OF_MONTH);

39voto

Mosiur Points 431

Utiliser le format de date

 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = format.parse(datetime);
SimpleDateFormat df = new SimpleDateFormat("yyyy");
year = df.format(date);

28voto

Konstantin Spirin Points 5347

N'utilisez pas Date , utilisez Calendar :

 // Beware: months are zero-based and no out of range errors are reported
Calendar date = new GregorianCalendar(2012, 9, 5);
int year = date.get(Calendar.YEAR);  // 2012
int month = date.get(Calendar.MONTH);  // 9 - October!!!
int day = date.get(Calendar.DAY_OF_MONTH);  // 5

Il supporte aussi le temps :

 Calendar dateTime = new GregorianCalendar(2012, 3, 4, 15, 16, 17);
int hour = dateTime.get(Calendar.HOUR_OF_DAY);  // 15
int minute = dateTime.get(Calendar.MINUTE);  // 16
int second = dateTime.get(Calendar.SECOND);  // 17

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X