| Dans cette fiche... |
| Difficulté :
|
Résultat |
| Question posée sur un newsgroup : comment
réaliser un compte à rebours, par exemple entre aujourd'hui et le 1er janvier 2020 ? On a compliqué la chose en passant la "date à atteindre" en paramètre. Pour plus de détails sur les paramètres, consultez cette page. |
// -------------------------------------------------- // COMPTE A REBOURS // --------------------------------------------------
import java.applet.*; import java.awt.*; import java.util.Date;
public class CompteARebours extends Applet
{
// Les dates
Date bientot;
Date aujourdhui = new Date();
// La différence des 2 dates long diff;
// Initialisation
public void init()
{
String s, s1, s2, s3;
// Couleur de fond setBackground(Color.black);
// Date à atteindre (passée en paramètre à l'applet)
s = getParameter("DATE");
s1 = s.substring(0, 2);
s2 = s.substring(3, 5);
s3 = s.substring(6, 10);
bientot = new Date(Integer.parseInt(s3)-1900,
Integer.parseInt(s2)-1,
Integer.parseInt(s1), 23, 59, 59);
// Différence des 2 dates diff = bientot.getTime() - aujourdhui.getTime(); }
// Affichage
public void paint(Graphics g)
{
g.setColor(Color.white);
g.drawString("" + diff/1000/60/60/24, 10, 15);
g.setColor(Color.orange);
g.drawString("" + aujourdhui.getTime(), 10, 30);
g.drawString("" + bientot.getTime(), 10, 45);
}
}
Les lignes non commentées ont déjà été traitées dans les exemples précédents.
import java.util.Date; |
| Pour pouvoir utiliser l'objet Date, il faut importer le
package correspondant. On aurait pu également écrire : import java.util.*; |
Date bientot; Date aujourdhui = new Date(); |
| On déclare 2 objets Date, et la date du jour est lue
directement. La date à atteindre (bientot) sera lue plus loin dans les paramètres de
l'applet. |
long diff; |
| Une petite variable qui nous servira plus loin à calculer la
différence entre les 2 dates, en millisecondes (quelle précision !) |
s = getParameter("DATE");
s1 = s.substring(0, 2);
s2 = s.substring(3, 5);
s3 = s.substring(6, 10);
|
| On lit le paramètre DATE, qui doit figurer dans la page HTML
(voir plus bas), sous la forme jj/mm/aaaa. On découpe ensuite cette valeur en 3 chaînes séparées, grâce à la méthode substring(), qui est détaillée ici. |
| bientot = new Date(Integer.parseInt(s3)-1900, Integer.parseInt(s2)-1, Integer.parseInt(s1), 23, 59, 59); |
On peut maintenant créer un objet Date, de la façon
suivante :
Ne pas oublier :
|
| diff = bientot.getTime() - aujourdhui.getTime() |
| L'objet Date dispose d'une méthode sur laquelle repose tout
notre programme : la méthode getTime(). Le problème : cette méthode donne le nombre de millisecondes écoulées entre le début de l'époque et la date concernée (sachant que le début de l'époque est le 1er janvier 1970). En calculant la différence entre les 2 dates, on obtient donc le nombre
de millisecondes entre les 2 dates. Reste à convertir ce nombre en jours pour une
meilleure lecture. |
| g.drawString("" + diff/1000/60/60/24, 10, 15) |
| C'est ici qu'on transforme la différence de millisecondes en
jours. La division est volontairement détaillée, de façon à montrer le passage en
secondes, puis en minutes, puis en heures, et enfin en jours. Ouf ! Les 2 lignes suivantes sont accessoires : elles permettent simplement d'afficher chaque durée en millisecondes, pour information. |
Voici le code qui a été utilisé dans cette page HTML pour faire apparaître l'applet :
<applet code="CompteARebours.class" width=250 height=90> <param name="DATE" value="01/01/2000"> Votre navigateur n'est pas compatible Java ! </applet>
Pour plus de précisions sur l'intégration d'une applet, cliquez ici.
| Cette section vous intéresse ? Abonnez-vous ! |
|