Y a-t-il un moyen de vous être averti lorsqu'il y a une mise à jour de l'heure du système à partir d'un serveur horaire ou d'un changement de DST? Je suis après une API / appel système ou équivalent. P>
Cela fait partie de mes efforts pour optimiser la génération d'une valeur pour quelque chose de similaire à SQL maintenant () à une granularité des heures, sans utiliser SQL. P>
3 Réponses :
Appelez simplement l'appel système approprié et faites la division en heures à chaque fois que vous avez besoin d'un horodatage; Tous les autres ajustements de temps de NTP ou tout ce qui aura déjà été fait pour vous. P> clock_gettime code> sur les systèmes Linux les plus récents est incroyablement rapide et généralement assez précis; Vous pouvez trouver la précision en utilisant
clock_Gettres code>. Mais pour les horodatées de niveau d'heure,
GetTimeOdday code> pourrait être plus pratique car il peut faire le réglage du fuseau horaire pour vous. P>
Je ne sais pas s'il y a un moyen d'être informé d'un changement de temps système, mais p>
Le temps système est stocké en tant que UTC, il n'ya donc jamais de changement en raison de la commande DST à notifier. p> li>
Si ma mémoire est correcte, NTP Daamon ajuste généralement l'horloge en modifiant sa vitesse, sans changement à être notifié. p> li> ul>
Donc, le seul moment où vous seriez averti, c'est après une manipulation rare. p>
Vous pouvez utiliser Timerfd_create (2) pour créer un Minuterie, puis marquez-la avec l'option (Ceci est par exemple: p> TFD_TIMER_CANCEL_ON_TIMER_CANCEL_ON_TIMER_CANCEL_ON_TIMER_CANCEL_PRES. Définissez-le pour un temps invraisemblable à l'avenir, puis bloquez-le (avec sondage / sélection, etc.) - Si l'heure du système change alors, la minuterie sera annulée, que vous pouvez détecter.
Est-ce que cela déclenche réellement avec un changement de DST?
@HOWARDHINNNANT AIME QUEL AVOYÉS DITES À SA RÉPONSE, DST change (au moins dans mon cas) s'est avéré moins significatif. Si je comprends bien, si vous utilisez des informations sur le fuseau horaire uniquement pour la présentation et effectuez toutes vos manipulations en UTC, le changement de DST devrait être hors de propos.
Pourquoi n'utilisez-vous pas simplement des appels système pour obtenir l'heure locale lorsque vous en avez besoin?
@Romain: Trop cher pour ma demande.
Voir aussi Stackoverflow.com/questions/10496531/...