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!

8
demandé sur Community 2010-05-12 13:27:47

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é.

7
répondu aioobe 2010-05-12 09:32:21

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 .

photo of a couple of external radio clock devices

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.

photo of a sundial on a pedestal in a garden

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?

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 .

3
répondu Basil Bourque 2018-03-01 22:37:58

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.

-3
répondu ZeissS 2010-05-12 09:29:43