c++ 获取时间戳、13位时间戳转为时间格式

1.获取时间戳

   //获取日期
    SYSTEMTIME st;
    CString StrTime;
	GetLocalTime(&st); //获取日期、时间
    StrTime.Format(_T("%.4d-%.2d-%.2d %.2d:%.2d:%.2d.%.3d"), st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds); //2022-07-23 09:49:04.358

2. 13位时间戳转为时间格式

        int64_t TimeUp = 1681436983403;	//13位时间戳
        auto milli = TimeUp + (long long)8 * 60 * 60 * 1000; 
        auto mTime = std::chrono::milliseconds(milli);
        auto tp = std::chrono::time_point<std::chrono::system_clock, std::chrono::milliseconds>(mTime);
        auto tt = std::chrono::system_clock::to_time_t(tp);
        std::tm* now = gmtime(&tt);
        CString ImgTime; 
        ImgTime.Format(L"%.4d-%.2d-%.2d %.2d:%.2d:%.2d.%.3d\n", now->tm_year + 1900, now->tm_mon + 1, now->tm_mday, now->tm_hour, now->tm_min, now->tm_sec, TimeUp % 1000);
        Printf(ImgTime );

执行结果:

2023-04-14 09:49:43.403

3.获取13位时间戳、减几毫秒,并打印出时间格式

    CString CStr;
    auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::milliseconds(150));    
    auto noread_ms = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()) - ms;
    Printfs("当前时间[%lld]-[%d]=减完后时间[%lld]\r\n", std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()), ms, noread_ms);
    auto mTime = std::chrono::milliseconds(noread_ms);
    auto tp = std::chrono::time_point<std::chrono::system_clock, std::chrono::milliseconds>(mTime);
    auto tt = std::chrono::system_clock::to_time_t(tp);
    std::tm* tn = gmtime(&tt);
    CStr.Format(L"时间:%.4d-%.2d-%.2d %.2d:%.2d:%.2d.%.3d", tn->tm_year + 1900, tn->tm_mon + 1, tn->tm_mday, tn->tm_hour, tn->tm_min, tn->tm_sec, int((noread_ms.count()) % 1000));
    Printf(CStr);

运行结果:
当前时间[1699446071139]-[150]=减完后时间[1699446070989]
时间:2023-11-08 12:21:10.989

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sam-zy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值