我需要API调用的特殊格式的时间戳:
我的第一个假设是使用:
auto now = std::chrono::system_clock::now();
std::cout << "millisceconds since epoch: "
<< std::chrono::duration_cast<std::chrono::milliseconds>(
now.time_since_epoch()).count()
但是当然输出是从UNIX时代开始的时间间隔
Thu Jan 1 00:00:00 1970
因此,对于
now = "Wed Dec 12 13:30:00 2018"
,它将返回1544617800000
ms。如何获得自0001年1月1日午夜12:00:00以来经过的毫秒数?
上下文OSISoft API
用于指定日期范围的OSISoft API文档非常奇怪
从这个文档中,我已经问了一个问题,该问题是如何获得自0001年1月1日午夜12:00:00以来经过的毫秒数。
我也将问题链接到PISquare
最佳答案
没有定义的方法来计算:
从示例来看,他们使用的算法与https://www.epochconverter.com/seconds-days-since-y0相同。要获得相同的结果,您可以将719162天添加到unix时代:
auto now = std::chrono::system_clock::now();
std::cout << "millisceconds since epoch: "
<< std::chrono::duration_cast<std::chrono::milliseconds>(
now.time_since_epoch() + std::chrono::hours(24 * 719162)).count()
注意c++ 20引入了
std::chrono::days
,您可以使用它而不是24小时。根据系统时钟的分辨率,您可能需要在添加偏移量之前将其强制转换为毫秒,以避免溢出(719162天大于2 ^ 64纳秒)。
关于c++ - c++自01/01/0001 00:00:00起获得毫秒数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53743217/