Présentation du type Date - 1

« Salut, Amigo. Je voudrais te parler d'un type intéressant appelé Date. Ce type stocke la date et l'heure, et peut également mesurer des intervalles de temps. »

« Ça m'a l'air intéressant. Continue, s'il te plaît. »

« Tout objet Date stocke une date sous une forme plutôt intéressante : le nombre de millisecondes écoulées depuis le 1er janvier 1970, GMT. »

« Ouah ! »

« Ouais. Ce nombre est si grand qu'il n'y a pas assez de place pour lui dans un int, et on doit donc le stocker dans un long. Mais c'est très pratique pour calculer la différence entre deux dates. Il te suffit de faire la soustraction pour trouver la différence avec une précision de l'ordre de la milliseconde. Cela résout également le problème des fuseaux horaires et de l'heure d'été. »

« La partie la plus intéressante est que chaque objet est initialisé avec l'heure actuelle à sa création. Pour connaître l'heure actuelle, il te suffit de créer un objet Date. »

« Et comment on l'utilise ? »

« Voici quelques exemples : »

Obtenir la date actuelle :
public static void main(String[] args) throws Exception
{
     Date aujourdhui = new Date();
     System.out.println("Date actuelle : " + aujourdhui);
}
Calculer la différence entre deux dates
public static void main(String[] args) throws Exception
{
    Date heureActuelle = new Date();           // Obtient la date et l'heure actuelles
    Thread.sleep(3000);                      // Attend 3 secondes (3000 millisecondes)
    Date nouvelleHeure = new Date();               // Obtient la nouvelle heure actuelle

    long retardMs = nouvelleHeure.getTime() - heureActuelle.getTime(); // Calcule la différence
    System.out.println("La différence d'heure est de : " + retardMs + " en ms");
}
Vérifier si une certaine durée s'est écoulée :
public static void main(String[] args) throws Exception
{
    Date heureDebut = new Date();

    long heureFin = heureDebut.getTime() + 5000;  //    +5 secondes
    Date dateFin = new Date(heureFin);

    Thread.sleep(3000);              // Attend 3 secondes

    Date heureActuelle = new Date();
    if(heureActuelle.after(dateFin))// Vérifie si heureActuelle est après dateFin
    {
        System.out.println("Heure de fin !");
    }
}
Détermine combien de temps s'est écoulé depuis le début de la journée :
public static void main(String[] args) throws Exception
{
    Date heureActuelle = new Date();
    int heures = heureActuelle.getHours();
    int minutes = heureActuelle.getMinutes();
    int secondes = heureActuelle.getSeconds();

    System.out.println("Temps depuis minuit " + heures + " heures, " + minutes + " minutes, " + secondes + " secondes");
}
Déterminer combien de jours se sont écoulés depuis le début de l'année :
public static void main(String[] args) throws Exception
{
    Date dateDebutAnnee = new Date();
    dateDebutAnnee.setHours(0);
    dateDebutAnnee.setMinutes(0);
    dateDebutAnnee.setSeconds(0);

    dateDebutAnnee.setDate(1);      // Premier jour du mois
    dateDebutAnnee.setMonth(0);     // Janvier (les indices des mois vont de 0 à 11)

    Date heureActuelle = new Date();
    long differenceTempsMs = heureActuelle.getTime() - dateDebutAnnee.getTime();
    long msJour = 24 * 60 * 60 * 1000;  // Le nombre de millisecondes dans 24 heures

    int nombreJours = (int) (differenceTempsMs/msJour); // Le nombre de jours complets
    System.out.println("Jours depuis le début de l'année : " + nombreJours);
}

« La méthode getTime() renvoie le nombre de millisecondes stocké dans un objet Date. »

« La méthode after() vérifie si la date sur laquelle nous avons appelé la méthode se situe après la date passée à la méthode. »

« Les méthodes getHours(), getMinutes() et getSeconds() renvoient respectivement le nombre d'heures, de minutes et de secondes pour l'objet sur lequel elles sont appelées. »

« De plus, dans le dernier exemple, tu peux voir qu'il est possible de modifier la date et l'heure stockées dans un objet Date. Nous obtenons l'heure et la date, puis réinitialisons les heures, les minutes et les secondes à 0. Nous avons également réglé le mois sur janvier et le jour sur le 1er du mois. Ainsi, l'objet dateDebutAnnee stocke la date du 1er Janvier de l'année actuelle, à minuit. »

« Après cela, nous obtenons à nouveau la date (heureActuelle), calculons la différence entre les deux dates en millisecondes, et stockons le résultat dans differenceTempsMs. »

« Ensuite, nous divisons differenceTempsMs par le nombre de millisecondes dans 24 heures pour obtenir le nombre de jours complets du début de l'année en cours jusqu'à aujourd'hui. »

« Ouah ! C'est trop cool ! »