Publié le 19/08/2010
Auteur Axel
Réseaux sociaux
0 partages
0 tweets
0 plus
3 commentaires

Ajouter ou soustraire des jours a une date

Manipuler les dates est parfois assez difficile surtout pour additionner ou soustraire des jours. En fait, une date est simplement le nombre de millisecondes écoulées depuis le 1er janvier 1970. En JAVA, il existe l'objet Calendar qui facilite grandement les opérations sur les dates.

Modifier une date avec Calendar

La class Calendar encapsule une date sous la forme d'une variable long et dispose de fonctions pour modifier une date en fonction d'un fuseau horaire.

Afficher la date du jour

Commençons par la première étape, quel jour sommes nous aujourd'hui ? Pour transformer la date qui en un Long en en un string que tout le monde peut lire, nous utilisons la fonction SimpleDateFormat.

import java.text.SimpleDateFormat;
import java.util.Calendar;
 
/**
 * Ajouter ou soustraire des jours a une date
 * http://www.fobec.com/java/968/ajouter-soustraire-jours-une-date.html
 * Axel 2010
 */
public class CalendarCalc {
 
    public static void main(String[] args) {
        //utiliser le calendrier par défaut
        Calendar calendar = Calendar.getInstance();
 
        //définir le format de la date
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
 
        //Afficher la date du joru
        System.out.println("Aujourd'hui, nous sommes le: "+sdf.format(calendar.getTime()));
 
        //Résultat: Aujourd'hui, nous sommes le: 19/08/2010
    }
}

Pour les opérations sur les dates, Calendar dispose des constantes suivantes:
Calendar.DATE: ajouter/soustraire un jour
Calendar.MONTH: ajouter/soustraire un mois
Calendar.YEAR: ajouter/soustraire une année
En 2ème paramètre de la fonction Add de Calendar, un nombre positif ajouter une durée, un nombre négatif soustrait une durée.

Ajouter des jours

Dans une semaine, soit 7 jours, quelle sera la date du jour ? Avec l'objet Calendar, l'ajout de jour est réalisé avec la fonction add et le nombre de jour à ajouter.

calendar.add(Calendar.DATE, 7);
System.out.println("Dans une semaine, nous serons le: "+sdf.format(calendar.getTime()));
//résultat: Dans une semaine, nous serons le: 26/08/2010

Soustraire un mois

Pour retirer un nombre de jour à une date, le principe reste le même: passer le nombre de jour en paramètre de la fonction add. Par contre, pour une durée d'un ou plusieurs, ca se complique car un mois peut avoir une durée différente 28 jours, 30 jours ou 31 jours. L'astuce consiste à utiliser la constante Calendar.MONTH.

calendar.add(Calendar.MONTH, -6);
System.out.println("Il y a 6 mois, nous étions le: "+sdf.format(calendar.getTime()));
//résultat: Il y a 6 mois, nous étions le: 19/02/2010


Au lieu de s'amuser à additionner des milisecondes à un TimeStamp, je vous conseille de passer par la class Calendar. Les opérations d'ajout et de soustraction de jour sur une date deviennent simple à réaliser

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.
avatar Neoray

Publié par Neoray

le 30/04/2018 à 13:50:15

Ce tuto m'a bien depanne. Par contre pour une utilisation avec les heures, il me semble qu'il y a une notion de GTM a mettre en plus.
Merci ;)

avatar Axel

Publié par Axel

le 30/04/2018 à 14:39:22

merci Neoray pour ce commentaire
Effectivement, l'objet Calendar s'initialise sur l'heure GMT avec TimeZone.getTimeZone("UTC");
Calendar.getInstance(TimeZone.getTimeZone("UTC"));
puis sdf.setTimeZone(TimeZone.getTimeZone("UTC"));

avatar Ba Mohamed

Publié par Ba Mohamed

le 27/04/2020 à 17:22:45

merci pour ce tuto, ca m'a beaucoup aider

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
java - sources
Mise a jour
19/08/2010
Visualisation
vu 17245 fois
Public
Internaute
Auteur de la publication
Axel
Membre junior
Auteur de 51 articles
|BIO_PSEUDO|
Commentaires récents

Publié par troops28 dans CMS

C un truc qui va plaire ca ;) enfin j'espere
En ajoutant :
if ColWidths[i] < Canvas.TextWidth(strTemp) then ColWidths[i] := Canvas.TextWidth(strTemp)+10;

Dans la procedure LoadStr...

Publié par Diviciakos dans CMS

Merci ! Bonne continuation

Publié par Julie dans logiciel

C'est donc un moteur de recherche specialise. On peut vraiment rechercher tous les domaines que l'on veut. Cela permettrait aux gens de ne plus se faire arnaquer. Quelle bonne idee!

Publié par ric dans CMS

c\'est la première fois que j\'utilise ce logiciel

Publié par fredouille dans java

Il ne faut pas oublier de mettre aussi System.setErr(printStream); pour ne pas oublier les printStackTrace() declenches par le catch