gpt4 book ai didi

c++ - 在 Howard Hinnant 的 Date 库中获取毫秒舍入时间戳字符串的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-01 14:05:25 27 4
gpt4 key购买 nike

我有以下代码,使用日期库:

#include "date.h"
#include <iostream>
#include <sstream>

using namespace date;
using namespace std::chrono;

int main()
{
auto now = system_clock::now();
std::stringstream ss;
ss << now;
std::string nowStr = ss.str(); // I need a string
std::cout << nowStr << " UTC\n";
}

结果是:
2020-03-26 17:38:24.473372486 UTC

stringstream 是从 now() 返回的 chrono::timepoint 获取字符串的正确方法吗?而且,如果是这样,我如何将这些纳秒四舍五入到毫秒?

最佳答案

是的,ostringstream是一个很好的方法来做到这一点。您也可以使用 date::format返回 string ,但这仍然使用 ostringstream内部:

string s = format("%F %T %Z", now);

使用任何一种技术,您都可以截断为 milliseconds通过截断输入输出 time_pointmilliseconds在格式化之前。您可以选择以下任何舍入模式:
  • 轮到纪元日期:time_point_cast<milliseconds>(now)
  • 圆过去:floor<milliseconds>(now)
  • 面向 future :ceil<milliseconds>(now)
  • 向最近的(甚至在领带上)四舍五入:round<milliseconds>(now)

  • ——
    string s = format("%F %T %Z", floor<milliseconds>(now));

    2020-03-26 17:38:24.473 UTC

    在 C++20 中,这将变成:
    string s = format("{:%F %T %Z}", floor<milliseconds>(now));

    关于c++ - 在 Howard Hinnant 的 Date 库中获取毫秒舍入时间戳字符串的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60873181/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com