关于网络校时时间转换的算法
当前我正在写一个网络校时的小应用,在网上看了一下别人写的代码,有一段算法不是很懂.请各位大侠帮忙解释一下,谢谢.
如下:
其中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);
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);}