Java: obtenir la Date et L'heure actuelles du serveur et non l'horloge du système
dans mon programme Java, je dois créer une instance du moment présent dans le temps. J'utilise
Date date = new Date();
cela me donne la date et l'heure actuelles selon l'horloge système de la machine hôte. Est-il possible que je peux obtenir la date et l'heure à partir d'un serveur en ligne? Le monde de serveur de temps peut-être?
j'ai vu ce post et il décrit ce que je veux mais j'ai peur d'avoir besoin de plus d'aide que ce qui est fourni.
en un mot, je veux obtenir une date et une heure qui ne dépendent pas de l'horloge système de la machine hôte.
Merci!
3 réponses
vous pouvez jeter un oeil à la démo client NTP Java disponible à
http://www.docjar.com/html/api/examples/ntp/NTPClient.java.html
et un exemple de code qui utilise ce client
http://www.docjar.com/html/api/examples/ntp/TimeClient.java.html
c'est environ 170 lignes de code java bien documenté.
réseau Local
si votre machine est connectée à un réseau local, connectez-vous à une machine agissant comme un serveur Temps fiable . Vous pouvez écrire votre propre serveur de temps.
Network Time Protocol
ou vous pouvez utiliser le Network Time Protocol (NTP) avec le serveur existant et le client les implémentations ont fourni avec la plupart des OS . Pour plus de détails, voir la réponse acceptée par aioobe .
envisager de placer cet ordinateur de serveur de temps dans DMZ du réseau de sorte que les mises à jour des serveurs de temps sur L'Internet tels que le pool.ntp.org projet ou ceux fournis par le gouvernement fédéral des États-Unis (NIST) .
Internet
si votre machine est connectée à Internet, connectez-vous à un serveur temporel fiable. Comme indiqué ci-dessus, utilisez un protocole personnalisé tel qu'un service web, ou utilisez NTP .
cela est discuté dans la Question, comment faire mon java app obtenir le temps global à partir d'une horloge en ligne .
Voir Aussi Questions: Java client NTP , et client Java pour le serveur de temps, comme le Network Time Protocol (NTP) .
Radio
obtenir une Radio clock avec une USB connexion pour la sortie de l'heure actuelle synchronisée par un code de temps transmis par un émetteur radio connecté à un étalon de temps tel qu'une horloge atomique. Les émetteurs émettent dans de nombreux pays du monde entier.
Le Meinberg Mondial de la société, au moins, propose des plusieurs de ces appareils .
GPS
similaire aux horloges radio ci-dessus, un récepteur de signaux GPS ( Global Positioning System ) pourrait également captez et relayez le time signal . Ou peut-être GALILEO , GLONASS ou autre Radionavigation-service par satellite .
Cadran Solaire
Position cadran solaire à l'extérieur d'une fenêtre. Joindre un webcam à l'ordinateur en question. La Position de la webcam dans la fenêtre. Ecrire une application pour interpréter l'heure du jour à partir de l'image actuelle du cadran solaire.
mise en garde: Cette solution ne fonctionne pas en Seattle .
java.time.Clock
pour exploiter l'un de ces fournisseurs du moment présent, écrire un sous-classe du résumé java.time.Clock
classe.
vous pouvez passer votre Clock
implémentation comme un argument aux différents java.temps méthodes. Par exemple:, Instant.now( clock )
.
Instant instant = Instant.now( yourClockGoesHere ) ;
à des fins d'essai, noter les autres implémentations de Clock
disponibles statiquement à partir de Clock
lui-même: fixed
, offset
, tick
, et plus encore.
éviter les classes date-heure héritées des premières versions de Java, telles que Date
et Calendar
. Ces classes gênantes sont entièrement supplantées par le java .temps classes.
à Propos de de java.heure
Le de java.temps cadre est intégré dans Java 8 et plus tard. Ces classes remplacent les anciennes classes de date legacy telles que java.util.Date
, Calendar
, & SimpleDateFormat
.
le Joda-Time projet, maintenant en mode maintenance , conseille la migration vers le java.temps des classes.
pour en savoir plus, voir le Oracle Tutorial . Et rechercher le débordement de la pile pour de nombreux exemples et explications. La spécification est JSR 310 .
vous pouvez échanger java.temps objets directement avec votre base de données. Utiliser un JDBC driver conforme à JDBC 4.2 ou plus tard. Pas besoin de Chaînes, pas besoin de classes java.sql.*
.
où obtenir le java.les classes de temps?
- Java SE 8 , Java SE 9 , et plus tard
- Built-in.
- fait partie de L'API Java standard avec une implémentation groupée.
- Java 9 adds quelques fonctionnalités mineures et corrections.
- Java SE 6 et Java SE 7
- une grande partie de la java.la fonctionnalité time est rétroportée à Java 6 & 7 dans ThreeTen-Backport .
- Android
- versions ultérieures des implémentations du pack Android de java.les classes de temps.
- pour Android plus tôt, le ThreeTenABP projet adapte ThreeTen-Backport (mentionné ci-dessus). Voir comment utiliser ThreeTenABP... .
le projet ThreeTen-Extra étend java.temps avec des cours supplémentaires. Ce projet est un terrain d'expérimentation pour d'éventuelles futures additions à java.temps. Vous pouvez trouver ici quelques cours utiles tels que: Interval
, YearWeek
, YearQuarter
, et plus .
normalement les serveurs synchronisent leur temps avec les serveurs de temps en ligne. Votre heure de serveur doit donc être précise. Sinon, contactez votre administrateur.
pour obtenir par exemple L'heure GMT, utilisez les classes calendrier et Fuseau horaire.