Forum: PC-Programmierung NTP und kernel


von Gast (Gast)


Lesenswert?

Hallo

Gibt es eine Möglichkeit im kernel die aktuelle Zeit im NTP Format zu 
erhalten! ich kenne nur den Befehl KeQuerySystemTime der die Zeit 
allerdings in einen anderen Format ausgibt! Oder kann man da dann 
einfach so umrechnen!?

MFG Gast

von Simon K. (simon) Benutzerseite


Lesenswert?

Gast wrote:
> Hallo
>
> Gibt es eine Möglichkeit im kernel die aktuelle Zeit im NTP Format zu
> erhalten! ich kenne nur den Befehl KeQuerySystemTime der die Zeit
> allerdings in einen anderen Format ausgibt! Oder kann man da dann
> einfach so umrechnen!?
>
> MFG Gast

NTP Format? Einfach nur Sekunden seit dem 1.1.1970 ("UNIX Zeit") 
http://en.wikipedia.org/wiki/Unix_time

von Arc N. (arc)


Lesenswert?

Simon K. wrote:
> Gast wrote:
>> Hallo
>>
>> Gibt es eine Möglichkeit im kernel die aktuelle Zeit im NTP Format zu
>> erhalten! ich kenne nur den Befehl KeQuerySystemTime der die Zeit
>> allerdings in einen anderen Format ausgibt! Oder kann man da dann
>> einfach so umrechnen!?
>>
>> MFG Gast
>
> NTP Format? Einfach nur Sekunden seit dem 1.1.1970 ("UNIX Zeit")
> http://en.wikipedia.org/wiki/Unix_time

Eher nicht...
NTP sind 64-Bit: 32-Bit "Vorkomma" Sekunden seit 1900-01-01, 
32-Bit-Nachkomma Sekundenbruchteile (1/2^32 Sekunden)

Kernelzeit sind 100ns seit dem 1601-01-01.
Lässt sich also umrechnen.

von Gast (Gast)


Lesenswert?

Hi

Danke füe die Antworten! Habe das umrechnen jetzt implementiert und es 
funktioniert auch so weit recht gut jedoch vertut er sich noch um ca 
3Tage und 4 stunden! Kennt jemand von euch den Wert für die Sekunden den 
ich abziehen muss umd vom 1.1.1601 auf den 1.1.1900 als ausgangspunkt zu 
gelangen oder eine seite im internet die das ausrechnet? Dürfte ein 
Problem mit den Schaltjahren sein!

MFG Gast

von Gast (Gast)


Lesenswert?

Hi

Konnte das Problem mit der verschiebung von rund 3 stunden beheben! Habe 
vor der umrechnung vergessen die Zeit in die Systemzeit umzuwandeln! 
Mittels ExSystemTimeToLocalTime. Jetzte geht das wirklich einwandfrei! 
Habe dafür wieder andere Porbleme die ich noch lösen muss!

MFG Gast

von Dietmar S. (ideefix)


Lesenswert?

Hallo,

und die 3 Tage lassen sich auch erklären, denn:

 - Schaltjahre finde alle 4 Jahre statt, immer, wenn die Zehner- und 
Einerstellen der Jahreszahl glatt durch 4 teilbar sind (4, 8, 12, 16 
...).

Ausnahmen:
1. Alle hundert Jahre (alle Jahreszahlen mit 00 am Ende) sind keine 
Schaltjahre (1700, 1800 1900,...)
2. Alle 400 Jahre ist trotzdem bei Endung 00 ein Schaltjahr (z.B. 2000)

Somit können deine 3 Tage Abweichung aus den Jahren 1700, 1800 und 1900.

Gruß

Dietmar

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.