2012-05-27 4 views
1

Comment la méthode java.util.Date.getTime convertit une date donnée & en nombre long? Les documents de l'API Java indiquent que - "Renvoie le nombre de millisecondes depuis le 1er janvier 1970, 00:00:00 GMT représenté par cet objet Date."Algorithme de Java Date getTime

Appréciez toute aide.

+4

Vous pouvez accéder au code source du JDK et jeter un coup d'œil. –

Répondre

3

Consultez le code source Date.java.

Vous verrez que dans le cas le plus simple, les magasins d'objets Date le nombre de millisecondes depuis 1970, plutôt que la date/heure, etc.

1

En fait, malgré la définition apparemment sans ambiguïté dans l'API Java doc, Il est intéressant de noter que le nombre de millisecondes indiqué n'est pas le nombre réel de millisecondes physiques, ou de secondes, qui se sont écoulées depuis le 1er janvier 1970 00:00:00 GMT. C'est en fait le nombre de secondes physiques plus le nombre de secondes intercalaires qui ont été artificiellement insérées.

+1

System.currentTimeMillis() se rapporte officiellement au temporisateur du système d'exploitation - voir http://stackoverflow.com/questions/14065355/are-leap-seconds-catered-for-by-calendar, il est donc probable qu'il ne reflète pas le saut secondes. J'ai testé cela sur Windows 7 et cela n'inclut pas les secondes intercalaires. – javaPhobic

+0

@javaPhobic Je crois que nous disons la même chose: si le nombre de secondes intercalaires n'est pas "reflété" (c'est-à-dire non comptabilisé), alors la valeur donnée est la durée du temps écoulé réel (c.-à-d. en utilisant un chronomètre depuis le 1er janvier 1970) plus la somme des secondes intercalaires qui ont été insérées. –

+0

Je pensais que cela devrait être négatif, c'est-à-dire que le retour long de getTime() correspond aux millisecondes réelles écoulées moins la somme des secondes intercalaires qui ont été insérées. – javaPhobic

Questions connexes