Présentation du type Date - 1Pré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 today = new Date();
     System.out.println("Current date: " + today);
}
Calculer la différence entre deux dates
public static void main(String[] args) throws Exception
{
    Date currentTime = new Date();           // Get the current date and time
    Thread.sleep(3000);                      // Wait 3 seconds (3000 milliseconds)
    Date newTime = new Date();               // Get the new current time

    long msDelay = newTime.getTime() - currentTime.getTime(); // Calculate the difference
    System.out.println("Time difference is: " + msDelay + " in ms");
}
Vérifier si une certaine durée s'est écoulée :
public static void main(String[] args) throws Exception
{
    Date startTime = new Date();

    long endTime = startTime.getTime() + 5000;  //    +5 seconds
    Date endDate = new Date(endTime);

    Thread.sleep(3000);              // Wait 3 seconds

    Date currentTime = new Date();
    if(currentTime.after(endDate))// Check whether currentTime is after endDate
    {
        System.out.println("End time!");
    }
}
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 currentTime = new Date();
    int hours = currentTime.getHours();
    int mins = currentTime.getMinutes();
    int secs = currentTime.getSeconds();

    System.out.println("Time since midnight " + hours + ":" + mins + ":" + secs);
}
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 yearStartTime = new Date();
    yearStartTime.setHours(0);
    yearStartTime.setMinutes(0);
    yearStartTime.setSeconds(0);

    yearStartTime.setDate(1);      // First day of the month
    yearStartTime.setMonth(0);     // January (the months are indexed from 0 to 11)

    Date currentTime = new Date();
    long msTimeDifference = currentTime.getTime() - yearStartTime.getTime();
    long msDay = 24 * 60 * 60 * 1000;  // The number of milliseconds in 24 hours

    int dayCount = (int) (msTimeDifference/msDay); // The number of full days
    System.out.println("Days since the start of the year: " + dayCount);
}

« 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(), 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 yearStartTime stocke la date du 1er Janvier de l'année actuelle, à minuit. »

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

« Ensuite, nous divisons msTimeDifference 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 ! »