IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Timestamp en nano seconde


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2002
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 101
    Par défaut Timestamp en nano seconde
    Bonjour, je voudrais recuperer le timeStamp (temp ecoule depuis 01/01/1970) avec une précision à la nano seconde.

    Il existe la méthode System.currentTimeMillis() qui donne une précision à la milliseconde mais rien pour une precision en nano.

    Il existe bien la méthode System.nanoTime() mais elle ne renvoie pas le timeStamp (cf la javadoc)

    En fait sous windows elle renvoie pas le TimeStamp en nano mais sous Linux oui.

    Cependant je ne peux pas etre certain d'avoir le TimeStamp en nano sous chaque Linux

    Comment faire pour avoir le timeStamp en nano souis Windows ET Linux

    Merci de votre aide

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Si tu veux une très bonne précision ce n'est pas possible sans passer par du code natif (et encore je ne suis même pas sûr que tout les système puisse proposer une telle précision depuis 1970...).


    Mais si ce timestamp t'es utile seulement pour un ordonnancement, tu peux utiliser le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	/* Date de reference en nanoseconde */
    	private static final long BASE = System.currentTimeMillis()*1000000;
    	/* Valeur initiale en nanoseconde */
    	private static final long INIT = System.nanoTime();
     
    	/**
             * Retourne la date courante en nanoseconde.
             */
    	public static long currentTimeNano() {
    		return BASE + (System.nanoTime() - INIT);
    	}
    Le champs statique BASE contient une approximation de la date du jour en nanoseconde. Comme on utilise currentTimeMillis() pour l'obtenir on a une précision en ms pour une valeur en nano...

    Le champs statique INIT contient une valeur en nanoseconde tel qu'elle est renvoyé par nanoTime().

    Ces deux champs étant déclaré en static final, il seront évalué au chargement de la classe. On pourra s'en servir comme référence pour calculer d'autre date dans le futur...


    Concrètement, la méthode currentTimeNano() renvoit le temps de base en nanosecondes obtenu au chargement de la classe, et lui ajoute le temps en nanosecondes qui s'est écoulé depuis...

    On obtient une approximation du temps depuis 1970 en nanoseconde, mais la précision de la valeur initiale est très mauvaise (millisecondes), alors que les appels successif auront une précision (entre eux) correspondant à celle de nanoTime()...

    a++

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2002
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 101
    Par défaut
    ok merci de ton aide !

    je vais voir tout cela demain !

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/04/2015, 09h57
  2. [TIMESTAMP] nb de secondes depuis 1970-01-01 00:00:00
    Par JMLLB dans le forum Requêtes
    Réponses: 2
    Dernier message: 12/03/2008, 10h48
  3. Différence de timeStamp en secondes
    Par Rod79 dans le forum Oracle
    Réponses: 2
    Dernier message: 22/11/2006, 10h39
  4. Temps d'execution en nano-secondes ( PC rapide )
    Par bouazza92 dans le forum C
    Réponses: 5
    Dernier message: 09/08/2006, 11h53
  5. Réponses: 1
    Dernier message: 01/06/2006, 23h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo