我需要一个特殊格式的时间戳来进行 API 调用:
日期转换为自 0001 年 1 月 1 日午夜 12:00:00 起经过的 UTC 毫秒数。
我的第一个假设是使用:
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
所以对于 anow = "Wed Dec 12 13:30:00 2018"
它返回1544617800000
ms。
如何获取自 0001 年 1 月 1 日午夜 12:00:00 以来经过的毫秒数?
上下文 OSISoft API
用于指定日期范围的 OSISoft API 文档很奇怪
数值范围查询
前面的示例是针对字符串字段的范围查询。数值 > 也可以使用范围查询来搜索。
唯一被索引为数字字段的字段是各个 PI 标记点属性的 CreationDate 和 ChangeDate 字段。要为这些字段编制索引 > 将它们添加到 PI 标记点属性列表。可以在“设置”页面上查看或修改此配置。
这些日期时间值通过转换索引为数值:日期转换为自 0001 年 1 月 1 日午夜 12:00:00 起经过的 UTC 毫秒数。
在以下示例中,查询是对上次更改日期等于或大于 2 月 26 日 22:16:50.000(这是世界时)的请求。这个DateTime,经过上述转换后,将表示为数值:63655280210000。因此提交的查询为:
https://MyServer/piwebapi/search/query?q=changedate:[63655280210000 TO *]
从这个文档中,我问了这个关于如何获取自 0001 年 1 月 1 日午夜 12:00:00 以来经过的毫秒数的问题。
我还将问题链接到PISquare