如何在C++中从__time32_t获取毫秒级精确时间?
问题解答
- 直接从
__time32_t格式里获取毫秒是不可行的。原因很简单:__time32_t本质是32位整数,只记录从1970年1月1日0点UTC开始的秒数,根本没有毫秒级的精度信息。 - 你当前的代码是把时间转成到秒的字符串格式,要是想输出毫秒,得先确认服务器能不能提供毫秒级的时间数据——比如有没有额外返回毫秒字段,或者返回更高精度的时间类型(比如带小数的时间戳、包含毫秒的结构体)。
- 如果服务器能给出毫秒值,修改代码的思路很直接:在生成的时间字符串后面拼接上
.xxx格式的毫秒部分就行。举个例子,假设你拿到了milliseconds变量存着0-999的毫秒数,就可以这样改:
localtime_s(&ptm, &close_time); std::wcsftime(buffer, 32, U("%Y.%m.%d %H:%M:%S"), &ptm); // 拼接毫秒 swprintf_s(buffer + wcslen(buffer), 32 - wcslen(buffer), U(".%03d"), milliseconds); result[U("close_time")] = web::json::value::string(buffer);
- 要是服务器只能返回
__time32_t,那没办法得到真实的毫秒,最多只能在字符串后面补.000来表示精度到秒。
内容的提问来源于stack exchange,提问作者Mohammad Soykot
相关产品推荐
相关产品推荐

