Accès rapide :
Les informations temporelles proposées par la classe System
La méthode System.currentTimeMillis()
La méthode System.nanoTime()
La classe java.util.Date
La gestion des dates et du temps n'est pas si simple que ça en Java. Effectivement, plusieurs API sont apparues au fil du temps, les nouvelles remplaçant en partie les anciennes. Bien qu'il existe de nombreux éléments aujourd'hui dépréciés, vous pouvez rencontrer toutes ces API dans les divers développements auxquels vous devrez vous confronter. C'est pour cette raison que nous allons étudier ces différentes possibilités.
Dans ce document, nous allons nous focaliser sur les fonctionnalités proposées (à une exception près) à partir de la première version de Java.
Il est possible d'obtenir des informations temporelles à partir de la classe java.lang.System
.
Deux possibilités nous sont offertes : étudions-les.
java.lang.System
.
Cette méthode permet de calculer la différence de temps écoulée, mesurée en millisecondes, entre l'instant présent et le 1er janvier 1970 à minuit (en temps universel coordonné - UTC). La valeur retournée est un entier long. Voici un exemple d'utilisation.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
package fr.koor.sample; import java.sql.Date; public interface Sample { public static void main( String[] args ) { // On récupère le nombre de millisecondes écoulées depuis le 1er janvier 1970 à minuit. long timestampMS = System.currentTimeMillis(); // On affiche le timestamp. System.out.printf( "Nombre de milliseconds écoulée depuis le 1er janvier : %d\n", timestampMS ); } } |
Vous pouvez vous servir de cette méthode pour mesurer le temps pris par un traitement donné, à condition que ce temps soit supérieur à une
milliseconde. Voici un exemple montrant cette possibilité : le traitement est ici un simple appel à la méthode Thread.sleep
afin
d'obtenir une pause d'une seconde.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
package fr.koor.sample; public interface Sample { public static void main( String[] args ) throws Exception { // On récupère un timestamp avant le début du traitement long begin = System.currentTimeMillis(); // On attend une seconde : le temps est aussi exprimé en millisecondes. Thread.sleep( 1000 ); // On récupère un timestamp après la fin du traitement long end = System.currentTimeMillis(); // On calcule la durée du traitement long duration = end - begin; // On affiche la durée mesurée pour effectuer le traitement System.out.printf( "Duration : %d ms\n", duration ); } } |
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :