Java:Les dates
De WIKI.minetti.org
Sommaire
Date et heure du jour
Date now = new Date();
Affectation d'une date et heure
Exemple pour le 25/03/2008 21 h 12 min 31 sec:
GregorianCalendar calendar = new GregorianCalendar(2008, 2, 25, 21, 12, 31); Date myDate = calendar.getTime();
Attention: Le mois est représenté par un nombre compris entre 0 et 11.
- Autre façon:
GregorianCalendar calendar = new GregorianCalendar(); calendar.set(GregorianCalendar.YEAR, 2008); calendar.set(GregorianCalendar.MONTH, 2); calendar.set(GregorianCalendar.DATE, 25); calendar.set(GregorianCalendar.HOUR, 21); calendar.set(GregorianCalendar.MINUTE, 12); calendar.set(GregorianCalendar.SECOND, 31);
- Pour vérifier si la date est correcte:
GregorianCalendar calendar = new GregorianCalendar(); calendar.setLenient(false); calendar.set(2008, 2, 25, 21, 12, 31); Date myDate = calendar.getTime();
Si la date n'est pas correcte, la méthode getTime va provoquer une exception java.lang.IllegalArgumentException.
Opérations sur les dates et les heures
Soit une date myDate de type Date.
GregorianCalendar calendar = new GregorianCalendar(); calendar.setTime(myDate); // Opérations Date myNewDate = calendar.getTime();
- Pour ajouter/retirer des jours:
calendar.add(Calendar.DATE, -7);
- Pour ajouter/retirer des mois:
calendar.add(Calendar.MONTH, 5);
- Pour calculer un nombre de jours entre deux dates:
double millis = calendarEnd.getTimeInMillis() - calendarBegin.getTimeInMillis(); double days = millis / 86400000;
Conversion d'une date et heure en chaîne
Soit une date myDate de type Date.
Locale locale = Locale.getDefault(); DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, locale); String strDate = dateFormat.format(myDate);
- Pour convertir uniquement la date:
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.SHORT, locale);
- Pour convertir uniquement les heures:
DateFormat dateFormat = DateFormat.getTimeInstance(DateFormat.SHORT, locale);
| Format | Résultat pour le mardi 4 novembre 2003 20 h 14 min 11 sec | ||
|---|---|---|---|
| Locale.FRANCE
Locale.FRENCH |
Locale.US
Locale.ENGLISH |
Locale.UK | |
| DateFormat.SHORT | 04/11/03
20:14 |
11/4/03
8:14 PM |
04/11/03
20:14 |
| DateFormat.MEDIUM | 4 nov. 2003
20:14:11 |
Nov 4, 2003
8:14:11 PM |
04-Nov-2003
20:14:11 |
| DateFormat.LONG | 4 novembre 2003
20:14:11 CET |
November 4, 2003
8:14:11 PM CET |
04 November 2003
20:14:11 CET |
| DateFormat.FULL | mardi 4 novembre 2003
20 h 14 CET |
Tuesday, November 4, 2003
8:14:11 PM CET |
Tuesday, 4 November 2003
20:14:11 o'clock CET |
- Autre solution pour les formats particuliers:
DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", locale);
Conversion d'une chaîne en date et heure
Soit une date strDate de type String.
Locale locale = Locale.getDefault();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd", locale);
Date myDate = sdf.parse(strDate);
- Pour vérifier si la date est correcte:
...
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd", locale);
sdf.setLenient(false);
...
Si la date n'est pas correcte, on aura une exception java.text.ParseException.
Eléments d'une date et heure
| Signification | Format | Calendar | Exemple pour le samedi 1er avril 2006 20 h 06 min 09 sec | ||
|---|---|---|---|---|---|
| Locale.FRANCE
Locale.FRENCH |
Locale.US
Locale.ENGLISH Locale.UK | ||||
| Epoque (BC/AD) | GG | - | ap. J.-C. | AD | |
| Epoque (0/1) | - | ERA | 1 | 1 | |
| Année | yy | - | 06 | 06 | |
| yyyy | YEAR | 2006 | 2006 | ||
| Mois | M | - | 4 | 4 | |
| MM | - | 04 | 04 | ||
| MMM | - | avr. | Apr | ||
| MMMM | - | avril | April | ||
| - | MONTH | 3 | 3 | ||
| Jour du mois | d | DAY_OF_MONTH
DATE |
1 | 1 | |
| dd | DAY_OF_MONTH
DATE |
01 | 01 | ||
| Heure (1-12) | h | - | 8 | 8 | |
| hh | - | 08 | 08 | ||
| Heure du jour (0-23) | H | HOUR_OF_DAY | 20 | 20 | |
| HH | HOUR_OF_DAY | 20 | 20 | ||
| Heure du jour (1-24) | k | - | 20 | 20 | |
| kk | - | 20 | 20 | ||
| Heure (0-11) | K | HOUR | 8 | 8 | |
| KK | HOUR | 08 | 08 | ||
| Minute | m | MINUTE | 6 | 6 | |
| mm | MINUTE | 06 | 06 | ||
| Seconde | s | SECOND | 9 | 9 | |
| ss | SECOND | 09 | 09 | ||
| Milliseconde | SSS | MILLISECOND | 000 | 000 | |
| Jour de la semaine | EEE | - | sam. | Sat | |
| EEEE | - | samedi | Saturday | ||
| Jour de la semaine (1: dim; 2: lun; ... 7: sam) | - | DAY_OF_WEEK | 7 | 7 | |
| Nombre de jours depuis le début de l'année | D | DAY_OF_YEAR | 91 | 91 | |
| DDD | DAY_OF_YEAR | 091 | 091 | ||
| Jour de la semaine dans le mois (1 à 5) | F | DAY_OF_WEEK_IN_MONTH | 1 | 1 | |
| Numéro de semaine depuis le début de l'année (1 à 52) | w | WEEK_OF_YEAR | 13 | 13 | |
| Numéro de semaine depuis le début du mois (0 à 5) | W | WEEK_OF_MONTH | 0 | 0 | |
| AM/PM | a | - | PM | PM | |
| aa | - | PM | PM | ||
| AM/PM (0/1) | - | AM_PM | 1 | 1 | |
| Zone horaire | z | ZONE_OFFSET | CEST | CEST | |
| zzz | ZONE_OFFSET | CEST | CEST | ||
| zzzz | ZONE_OFFSET | Heure d'été d'Europe centrale | Central European Summer Time | ||
| - | ZONE_OFFSET | 3600000 | 3600000 | ||
| - | DST_OFFSET | 3600000 | 3600000 | ||
| Texte | 'texte' | - | texte | texte | |
| Simple quôte | " | - | ' | ' | |