NTP64ビットタイムスタンプフォーマット
NTP 64ビットタイムスタンプフォーマットを DateTime に変換。
/// <summary> /// NTP 64ビットタイムスタンプ形式から DateTime に変換します。 /// </summary> /// <param name="ntpTimeStamp">NTP 64ビットタイムスタンプ。</param> /// <returns></returns> static private DateTime NtpTimeStampToDateTime( long ntpTimeStamp ) { long seconds = (long)( ntpTimeStamp >> 32 ); long secondsFraction = (long)( ntpTimeStamp & uint.MaxValue ); long milliseconds = seconds * 1000 + ( secondsFraction * 1000 ) / COMPENSATING_RATE; return GetCompensatingDatetime( seconds ) + TimeSpan.FromMilliseconds( milliseconds ); }
C# 風に。
あたりまえだけど long は IPAddress.NetworkToHostOrder した後のもの。
NTP 64ビットタイムスタンプフォーマット : 32ビットの整数部 + 32ビットの小数部で、1900/1/1からの経過ミリ秒