询问64位时间数组如何转化输出的问题
我想实现获取服务器年月日并显示出来(格式YYYY-MM-DD)。
从网上找到一段从服务器获取时间并修正系统时间的代码,找到其获取的服务器时间的参数后,
其定义方式为:UINT64 uiCurtime,uiBaseTime,uiResult;//uiCurtime 为相差时间 uiBaseTime为基准时间 uiResult为所需当前时间
问题
1:我如何把uiResult 正确显示(解析)为 (格式YYYY-MM-DD)
PS:不要说修改完系统时间再从系统时间获取,而是直接从服务器获取后转换
2:定义基准时间的代码
#define HIGHTIME 21968699 //jan 1,1900
#define LOWTIME 4259332096//jan 1,1900
高低位如何分析出 年月日
谢谢,第一次发贴 求帮助
[解决办法]
- C/C++ code
#include <afxdisp.h>#include <winbase.h>#include <stdio.h>#include <stdlib.h>typedef unsigned __int64 UINT64;UINT64 uiCurtime,uiBaseTime,uiResult; //uiCurtime 为相差时间 uiBaseTime为基准时间 uiResult为所需当前时间#define HIGHTIME 21968699 //jan 1,1900#define LOWTIME 4259332096 //jan 1,1900int main(int argc, TCHAR* argv[]) { FILETIME *pFT; //The FILETIME structure is a 64-bit value representing the number of 100-nanosecond intervals since January 1, 1601. COleDateTime t; CString s,fmt; // initialize MFC and print and error on failure if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { printf("Fatal Error: MFC initialization failed\n"); return 1; } uiBaseTime=(UINT64)LOWTIME|(((UINT64)HIGHTIME)<<32); uiCurtime=8ui64*3600ui64*10000000ui64;//8小时 uiResult=uiBaseTime-uiCurtime; pFT=(FILETIME*)&uiResult; t=COleDateTime(*pFT); fmt="%Y-%m-%d %H:%M:%S"; s=t.Format(fmt); printf("%s\n",s); return 0;}//1900-01-01 00:00:00