本站首页 - 分类目录 - 本类文章
ntp编程中的时间函数(收集中)


1、获得timeval
void gettimeofday(struct timeval* tv,int temp)
{
    union {
             __int64 ns100;
             FILETIME ft;
    } now;
    GetSystemTimeAsFileTime (&now.ft);
    tv->tv_usec =  ((now.ns100/10)%1000000); //微秒
    tv->tv_sec =  ((now.ns100 - 116444736000000000) / 10000000); //1970年以来的秒数
 
}
//116444736000000000为1601年到1970年的秒数。windows时间从1601年开始算,最小单位是100ns,而timeval为unix时间从1970年开始算,最小单位是微秒。


2、ntp时间戳
struct ntptime 
{
    unsigned int integer; //1900年以来的秒数
    unsigned int fraction;//小数部份,单位是微秒数的4294.967296(=2^32/10^6)倍
};


3、timeval到ntp时间戳的转换

ntptime.integar=timeval.tv_sec+JAN_1970;
ntptime.fraction=timeva.tv_usec* 0x100000000/1000000;

其中:
#define JAN_1970      0x83aa7e80      // (2208988800) 1900年到1970年的秒数

4、ntp时间戳转换为1970以来的时间

秒数=ntptime.integar-JAN_1970;
微秒数=ntptime.fraction *1000000/0x100000000 ;


上一篇:使用iframe进行后台提交和读取
下一篇:如何获得指定网站服务器的时间