Windows系统下,GetLocalTime()获取的时间转换成Unix时间戳(毫秒级)

通常在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;
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值