Comment obtenir le nombre de millisecondes écoulées à ce jour aujourd'hui
Je veux obtenir l'heure et la date en millisecondes. Comment puis-je l'obtenir?
J'ai essayé ceci:
Date date=new Date() ;
System.out.println("Today is " +date.getTime());
Il sera de retour le millisecondes depuis le 1er janvier 1970.
Mais je veux de l'actuel millisecods de la date d'aujourd'hui, comme:
23:59:00 = 86340000 milliseconds
source d'informationauteur Chirag Raval
Vous devez vous connecter pour publier un commentaire.
Ce n'est pas la bonne approche pour Java 8 ou plus récent. Cette réponse est conservé pour la postérité, pour tout assez moderne Java utiliser le Basilic Bourque l'approche de la place.
La suite semble fonctionner.
Le problème est que
date.getTime()
renvoie le nombre de millisecondes à partir de 1970-01-01T00:00:00Z, maisnew Date()
donne le courant local temps. L'ajout de laZONE_OFFSET
etDST_OFFSET
de laCalendar
classe vous donne le temps dans le répertoire par défaut/fuseau horaire actuel.Essayer:
Remarque: 86400000 est le nombre de millisecondes dans une journée.
java.temps
La méthode moderne utilise java.temps classes qui permettent d'éviter la pénible ancien héritage de date-heure classes.
Obtenir le laps de temps entre le début de l', aujourd'hui, à l'heure actuelle est plus compliqué que vous pourriez vous attendre.
Moment
Tout d'abord, la détermination de “aujourd'hui” nécessite un temps de traitement de la zone. Un fuseau horaire est crucial dans la détermination d'une date. Pour un moment donné, la date varie à travers le monde par zone. Par exemple, quelques minutes après minuit dans Paris, France est un nouveau jour, alors encore “hier” dans Montréal, Québec.
Spécifier un fuseau horaire nom dans le format de
continent/region
commeAmerica/Montreal
Africa/Casablanca
ouPacific/Auckland
. Ne jamais utiliser de l'3-4 lettre pseudo-zones commeEST
ouIST
comme ils sont pas vrai fuseaux horaires, pas normalisée, et même pas unique(!).Si vous souhaitez utiliser la JVM par défaut en cours de fuseau horaire, demandez, et passé en argument. Si omis, la JVM par défaut actuel est appliqué implicitement. Mieux être explicite, comme la valeur par défaut peut être modifié à tout moment au cours de l'exécution par du code dans un thread de n'importe quelle application à l'intérieur de la JVM.
La
ZonedDateTime
classe représente un moment (date & heure de la journée), tel que vu par les gens d'une région particulière (un fuseau horaire, unZoneId
).Début de la journée
Ensuite, nous devons déterminer le moment de la journée. Ne pas assumer la journée démarre à 00:00:00. En raison d'anomalies telles que l'Heure d'été (DST), la journée peut commencer à un autre moment comme 01:00:00. Laissez java.le temps de déterminer le moment de la journée, dans une zone particulière sur une date en particulier.
Premier extrait de la date seule partie de notre
ZonedDateTime
objet ci-dessus.Demander pour le premier moment de la journée dans notre zone souhaitée.
Temps écoulé
Maintenant, nous avons la paire de pièces dont nous avons besoin: premier moment de la journée, et le moment actuel. Nous demandons à la
ChronoUnit
enum objetMILLISECONDS
pour calculer le temps écoulé entre la paire. Notez que cela peut impliquer la perte de données, comme leZonedDateTime
objets peut tenir microsecondes ou nanosecondes être ignoré dans le calcul de millisecondes.Vous pourriez également être intéressé dans la représentation que de la durée de temps hors de la chronologie dans un
Durée
objet.Sur java.temps
La java.temps cadre est intégré dans Java 8 et les versions ultérieures. Ces classes permettent d'éviter la pénible vieux héritage date du temps des classes comme
java.util.Date
Agenda
&SimpleDateFormat
.La Joda-Time projet, maintenant dans le mode de maintenanceconseille la migration vers le java.le temps classes.
Pour en savoir plus, consultez les Oracle Tutoriel. Et de recherche de Débordement de Pile pour de nombreux exemples et des explications. La spécification est JSR 310.
Avec un Pilote JDBC respecter JDBC 4.2 ou plus tard, vous pouvez l'échanger java.temps objets directement avec votre base de données. Pas besoin de chaînes ou de java.sql* les classes.
Où obtenir le java.les classes de temps?
La ThreeTen-Extra projet s'étend java.temps avec d'autres classes. Ce projet est un terrain d'essai pour de possibles futurs ajouts à java.temps. Vous pouvez trouver quelques classes utiles ici comme
Intervalle
YearWeek
YearQuarter
et plus.Utiliser ce code pour obtenir la date et l'heure actuelles