通常在Linux获取Unix时间戳比较常见,但是在Windows系统下,获取无法直接转成Unix时间戳,这让习惯使用Unix时间戳的我很不习惯
GetLocalTime()函数是用来获取当地的当前系统日期和时间的
对应转代码如下:
__int64 GetPresentUnixTime() {
//unix时间戳为1900年以来的秒数 ,获取系统当前时间的Unix时间戳
SYSTEMTIME sysTime;
GetLocalTime(&sysTime);
char buffer[50];
sprintf(buffer, "%d-%d-%d %d:%d:%d", sysTime.wYear, sysTime.wMonth, sysTime.wDay,
sysTime.wHour, sysTime.wMinute, sysTime.wSecond);
std::string strTime(buffer);
printf("当前系统时间:%s\n",strTime);
struct tm tm;
memset(&tm, 0, sizeof(tm));
sscanf(buffer, "%d-%d-%d %d:%d:%d:%d",
&tm.tm_year, &tm.tm_mon, &tm.tm_mday,
&tm.tm_hour, &tm.tm_min, &tm.tm_sec);
tm.tm_year -= 1900;
tm.tm_mon--;
time_t lt = mktime(&tm); //如果想获取(秒级)的值,这里就可以直接返回
//下一步llt,是转化成(毫秒级)的Unix时间戳
time_t llt = lt * 1000 + sysTime.wMilliseconds;
printf("Unix时间戳:%I64d\n",llt);
return llt;
}