首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于网络校每每间转换的算法

2012-10-24 
关于网络校时时间转换的算法当前我正在写一个网络校时的小应用,在网上看了一下别人写的代码,有一段算法不

关于网络校时时间转换的算法
当前我正在写一个网络校时的小应用,在网上看了一下别人写的代码,有一段算法不是很懂.请各位大侠帮忙解释一下,谢谢.

如下:
其中ulTime是从校时服务器发过来的从1900年1月1日到现在已经经过的秒数,有两个问题:
1。根据返回来的时间,我觉得服务器已经把时区考虑在内了,可能是根据发起连接的IP判断你当前所在的时区,再把相应的秒数发回来的,但是没有找到确定的依据。
2。这里有一段的算法不是很明白他为什么要这么写,哪位大侠不吝指点一下,谢谢。
  SystemTimeToFileTime(&st, &ft);
  li = *(LARGE_INTEGER*)&ft;
li.QuadPart += (LONGLONG)10000000 * ulTime;
ft = *(FILETIME*)&li;
FileTimeToSystemTime(&ft, &st);
SetSystemTime(&st);

C/C++ code
LOCAL void MySetTime(uint32 ulTime){    FILETIME ft;    SYSTEMTIME st;    LARGE_INTEGER li;    st.wYear = 1900;    st.wMonth = 1;    st.wDay = 1;    st.wHour = 0;    st.wMinute = 0;    st.wSecond = 0;    st.wMilliseconds = 0;    SystemTimeToFileTime(&st, &ft);         li = *(LARGE_INTEGER*)&ft;    li.QuadPart += (LONGLONG)10000000 * ulTime;    ft = *(FILETIME*)&li;    FileTimeToSystemTime(&ft, &st);    SetSystemTime(&st);}


[解决办法]
1一般通信中网络传输都是用utc时间,客户端接收后自己根据时区调整成本地时间展示给用户。
2只是得到了一个时间差ulTime的话,这么做是为了给定的时间转成结构SYSTEMTIME st
你也可以使用c语言库中的函数进行转化。

热点排行