Ajouter millisecondes à Java à jour, lorsque millisecondes est long
Je suis à la recherche de la meilleure façon d'ajouter de millisecondes à un Java Date de millisecondes est stocké comme un "long". Java calendrier a un ajouter fonction, mais il ne prend qu'un " int " le montant.
C'est une solution que je propose...
Calendar now = Calendar.getInstance();
Calendar timeout = Calendar.getInstance();
timeout.setTime(token.getCreatedOn());
timeout.setTimeInMillis(timeout.getTimeInMillis() + token.getExpiresIn());
Toutes les autres suggestions?
OriginalL'auteur cweston | 2010-08-10
Vous devez vous connecter pour publier un commentaire.
Votre solution semble près de bien pour moi, en fait. J'ai posté une réponse intermédiaire
Date
, alors que je n'avais pas prisgetTimeInMillis
etsetTimeInMillis
en compte correctement.Cependant, vous appelez
setTime
et puissetTimeInMillis
qui semble quelque peu redondant pour moi. Votre code est équivalent à ceci:Généralement plus agréable alternative serait d'utiliser Joda Time bien 🙂 C'est généralement une beaucoup plus agréable de date/heure API.
Je ne comprends pas votre commentaire -
Date
jamais a un fuseau horaire associé avec elle. C'est toujours un nombre de millisecondes écoulées depuis l'époque Unix.En fait, il devrait être comme vous le dites, mais si vous vérifiez la Date de l'objet, il porte toujours une sorte de fuseau horaire. Semble Java a eu beaucoup de problèmes avec la Date de manipulation (c'est pourquoi Joda est né) et c'est l'un d'entre eux. C'est exactement la raison pourquoi je ne pouvais pas utiliser des calendriers pour résoudre mon problème, mais plutôt dû se résoudre à Joda millis manipulation. Bien sûr, ma question est très spécifique et a été liée au total de secondes qui sont passés de 1/1/1970 qui aurait été 0, mais j'avais reçu un nombre négatif à cause de fuseau horaire. À l'aide de calendriers permettrait de réduire de 1 heure dans mon cas 🙁
Non, java.util.La Date n'ont pas de temps horaire. Il n'a pas vraiment d' - ce qui vous fait penser cela?
Je sais que théoriquement, il n'est pas, mais si vous déboguez une Date, elle aura 2 propriétés, dont l'un aura une valeur liée au fuseau horaire. Essayez de demander une date de création dans un GMT serveur fonctionnant avec le 1/1/1970 00:00:00 date de combien de millis il a, et étonnamment, il retourne un nombre négatif. Peut-être n'est pas la Date de l'objet lui-même mais l'instanciation.
OriginalL'auteur Jon Skeet
Vous pouvez également créer une date avec la date du jour ainsi que le nombre de milisecondes vous avez besoin d'ajouter que le délai d'Expiration
Ou même avec un calendrier
Si vous utilisez un objet Date existant que vous pouvez faire:
Et avec un Calendrier existant Objet
OriginalL'auteur Dubas
Calendrier est assez cher Date objet, et la fonctionnalité n'est pas le meilleur. Si vous voulez un tout usage de l'objet Date, je suggère regardant JODA Time et il a une fonction qui fait ce que vous voulez.
Cependant, un simple Java objet Date est la Date de la classe comme @Dubas indique.
Encore plus simple pour le type d'opération que vous effectuez est d'utiliser un long temps. C'est aussi beaucoup plus rapide.
J'utilise durée (en heure GMT) pour tous mes dates et utiliser uniquement Date pour la couche de présentation. c'est à dire. lorsque vous souhaitez convertir la date en Texte.
OriginalL'auteur Peter Lawrey