2012-11-07 7 views
2

Une de mes classes Event aura un champ d'instance qui s'appelle timeStamp. Maintenant, j'ai une autre classe qui va définir le timeStamp selon un autre algorithme qui n'est pas vraiment pertinent ici.Comment stocker l'heure dans une variable?

Ma question est ce que tapez dois-je stocker ce timeStamp dans? De ce que j'ai recherché jusqu'à présent, j'ai l'impression qu'il devrait être calculé en millisecondes et donc le stocker dans un double peut-être.

Fondamentalement, la classe Clock simule l'heure au format suivant: hh: mm: ss. Cependant, puisque c'est une simulation d'événement discret que je développe, il saute d'un événement à l'autre, qu'il détermine par la valeur timeStamp, c'est-à-dire que chaque objet événement a une valeur timeStamp qui est stockée dans un PrioityQueue. J'ai donc pensé à stocker le timeStamp dans le même format que le Clock, ce qui impliquerait, je suppose, de créer une nouvelle classe TimeStamp qui deviendra alors le type du timestamp. Ou devrais-je simplement faire en sorte que l'horloge simule l'heure en millisecondes?

Que pensez-vous de cela? Je ne suis pas sûr de la façon la plus efficace/propre de mettre en œuvre cela.

+0

Quel est le problème avec DateTime? Ah, désolé, je pense que je pense à la classe [DateTime dans Joda Time] (http://joda-time.sourceforge.net/apidocs/org/joda/time/DateTime.html). –

Répondre

2

Lorsqu'une date est enregistrée comme millisecondes depuis l'époque, vous devez utiliser un long.

Vous n'avez pas besoin de double, puisque vous n'êtes pas intéressé par les fractions de milliseconde.

Vous ne pouvez pas utiliser un int car la valeur int maximale est seulement suffisante pour représenter environ un mois en millis.

Vous pouvez obtenir une telle valeur comme ceci:

long millisSinceEpoch = Calendar.getInstance().getTimeInMillis();

+0

et nous pouvons éviter l'imprécision de comparaison flottante! –

2

Stockez les millisecondes dans un long.

Vous pouvez utiliser la classe DateTime dans Joda Time pour effectuer toutes sortes de complexités sur le nombre résultant. This overload vous permet de brancher la valeur en millisecondes directement dans un objet DateTime.

Questions connexes