如何在 Mac OSX 中获取真实的日历微秒时间(自 1970 年以来的纪元)?

2024-01-10

请通过下面的 Qn 了解上下文:
为什么 clang++/g++ 在 Mac OSX 中没有为 chrono::high_resolution_clock::now() 提供正确的微秒输出? https://stackoverflow.com/q/45882606/514235

正如上面已经讨论过的,我打算得到microseconds时间从1970年开始。
现在使用chrono::high_resolution_clock::now().time_since_epoch()在除 OSX 和可能的 iOS 之外的流行平台上运行良好。在 [我们的] Mac 系统中,微秒时间是自系统重新启动后生成的,而不是自 1970 年以来生成的。

是否有任何便携式 [或 Mac 特定] 方法来获取 1970 年以来的时间,精度为microseconds?
也欢迎针对 Qt 的解决方案。


在 macOS 上,您可以通过以下方式获取自 1970-01-01 UTC 以来的微秒(不包括闰秒):

#include <chrono>
#include <iostream>

int
main()
{
    std::cout << std::chrono::system_clock::now().time_since_epoch().count() << "us\n";
}

这只是我的输出:

1503715928742714us

这不太便携。虽然各个平台的system_clocks 确实测量自 1970-01-01 UTC 以来的时间(未指定,但事实上的标准),它们以不同的精度进行测量。只有 macOS 使用微秒。要便携式输出微秒:

using namespace std::chrono;
std::cout << time_point_cast<microseconds>(system_clock::now()).time_since_epoch().count() << "us\n";

如果您想在执行此操作的同时探索其他平台这次测量的精度,您可以使用Howard Hinnant 的日期/时间库 https://howardhinnant.github.io/date/date.html非常容易地做到这一点:

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

int
main()
{
    using namespace date;
    using namespace std::chrono;
    std::cout << system_clock::now().time_since_epoch() << '\n';
}

对我来说这只是输出:

1503716308206361µs

在 gcc 平台上,单位为ns。在 Windows 上,单位是[1/10000000]s,即 1/10 µs 或 100ns。


About chrono::high_resolution_clock:

该标准规定high_resolution_clock可能是类型别名system_clock or steady_clock,或者它可能是一个单独的类型。在 macOS 和 Windows 上,high_resolution_clock是一个类型定义steady_clock。关于海湾合作委员会high_resolution_clock是一个类型定义system_clock。所以你不能依赖于类型或行为high_resolution_clock。我不推荐它的使用。


About chrono::steady_clock:

steady_clock就像秒表一样。它对于计时某件事需要多长时间非常有用。但它无法告诉您一天中的时间。它与任何平台上的人类日历都没有任何关系。在 macOS 上steady_clock它是自计算机启动以来的纳秒计数。

有关当前不同的视频教程std::chrono时钟,请参阅https://www.youtube.com/watch?v=P32hvk8b13M https://www.youtube.com/watch?v=P32hvk8b13M


Only system_clock计算时间自Unix时代 http://en.wikipedia.org/wiki/Unix_time(事实上​​的标准,非官方)。有一个正在考虑的提案 https://wg21.link/p0355为了使其正式化,并添加这些额外的时钟:

utc_clock https://wg21.link/p0355#time.clock.utc: Like system_clock但包括闰秒。

tai_clock https://wg21.link/p0355#time.clock.tai:测量自 1958-01-01 00:00:00 以来的物理秒数。提前一秒utc_clock每次都有闰秒。All分钟有 60 秒。

gps_clock https://wg21.link/p0355#time.clock.gps: Like tai_clock但测量自 1980 年 1 月第一个星期日 00:00:00 UTC 以来的时间。

file_clock https://wg21.link/p0355#time.clock.file:建议将其作为 C++17 文件系统库所基于的时钟。它没有被指定,但所有已知的实现都以某种方式将其与民用日历相关联。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Mac OSX 中获取真实的日历微秒时间(自 1970 年以来的纪元)? 的相关文章

  • 如何通过覆盖 MSBuild 目标来防止外语资源生成?

    我正在致力于减少大型 C ASP NET 解决方案的编译时间 我们的解决方案使用通常的 resx 文件方法翻译成大约十几种外语 这些资源文件的解析和编译极大地减慢了我们的编译时间 并且是日常的挫败感 我知道可以创建自定义资源提供程序并摆脱
  • 如何通过 libwebsocket 发送异步数据?

    我正在将 Warmcat 的 libwebsocket C 库用于小型 Websocket 服务器 我已经启动并运行了这些示例 并且可以发送数据以响应从 websocket 接收数据 例如回显发送的反向字节 但是 我无法弄清楚如何在不使用
  • 无法将参数从 `const char *` 转换为 `char *`

    鉴于此代码 void group build int size std string ips Build the LL after receiving the member list from bootstrap head new memb
  • 为什么像 BindingList 或 ObservableCollection 这样的类不是线程安全的?

    我一次又一次发现自己必须编写 BindingList 和 ObservableCollection 的线程安全版本 因为当绑定到 UI 时 这些控件无法从多个线程更改 我想理解的是why情况就是这样 这是设计错误还是故意的 问题是设计一个线
  • C# 中的抽象类和接口类有什么不同?

    C 中的抽象类和接口类有什么不同 An 接口不是类 它只是一个contract定义了public一个类的成员must实施 抽象类只是一个类 您从中可以cannot创建一个实例 通常您会使用它来定义一个基类 该基类定义了一些virtual方法
  • 检测反射 DLL 注入

    在过去的几年中 恶意软件 以及一些渗透测试工具 如 Metasploit 的 meterpreter 负载 已经开始使用反射 DLL 注入 PDF http www harmonysecurity com files HS P005 Ref
  • 如何在 C++ 和 QML 应用程序中使用 qrc?

    我在 Windows7 上用 c qnd Qt Creator QML 编写了 Qt Quick Desktop 应用程序 现在 我必须部署它 并且我需要隐藏 qml 文件和图像 意味着 将它们放入资源等中 我读到有一个很好的方法可以使用
  • asp.net core http 如果没有内容类型标头,则删除 `FromBody` 忽略

    我在 http 中使用 bodyDELETE要求 我知道目前删除主体是非标准的 但是允许的 使用时出现问题HttpClient它不允许删除请求的正文 我知道我可以使用SendAsync 但我宁愿让我的 API 更加灵活 我希望这个机构是可选
  • 允许在 Safari 上聊天应用程序使用 audio.play()

    由于苹果禁用了自动播放音频的功能HTMLMedia Element play https developer mozilla org en US docs Web API HTMLMediaElement play在没有用户交互的 java
  • ASP.NET MVC 动作过滤器

    有谁知道即使在 CATCH 块中 ActionFilterAttribute 类的 OnResultExecuted 方法是否也会执行 ie CookiesActions public ActionResult Login Usuarios
  • 查找方法不适用于 EF6.1 模拟

    我已经使用这些 msdn 指南设置了模拟 使用模拟框架进行测试 EF6 及以上 http msdn microsoft com en us data dn314429 var bsAc db BusAcnts FirstOrDefault
  • linq where 子句和 count 导致 null 异常

    除非 p School SchoolName 结果为 null 否则下面的代码将起作用 在这种情况下 它会导致 NullReferenceException if ExistingUsers Where p gt p StudentID i
  • 使用 dateTimePicker 在 DataGridView 中编辑日期

    我有一个DateTime我的 WinForms 中的专栏DataGridView 目前只能通过手动输入日期来编辑该字段 例如 2010 09 02 需要什么才能拥有一个DateTimePicker 或同等 用作编辑器 DataGridVie
  • 如何禁用基于 ValidationRule 类的按钮?

    如何禁用基于 ValidationRule 类的 WPF 按钮 下面的代码可以很好地突出显示 TextBox
  • 如果仅使用第一个元素,是否必须为整个结构分配内存?

    我有一个结构 其中第一个元素被测试 并且根据其值 结构的其余部分将被读取或不会被读取 在第一个元素的值指示结构的其余部分不会被读取的情况下 我是否必须为整个结构或仅第一个元素分配足够的内存 struct element int x int
  • 'iter' 的名称查找已更改为新的 ISO 'for' 范围

    我正在尝试编译下面的两个文件 但从编译器收到错误消息 gcc 4 3 3 Linux 错误位于带有以下符号的行 LINE WITH ERROR 我做错了什么 我该怎么改变 路易斯 g c b h b cpp b cpp In functio
  • 展开 std::reference_wrapper 的成本

    Given include
  • C - 获取外部IP地址

    我需要通过 C C 调用获取我的公共 IP 地址 我知道作为替代方案 我可以从 http whatismyip akamai com 等外部链接获取 我写了一个示例来获取外部IP地址 但我的程序没有返回外部 IP 地址 我正在获取内部 IP
  • 如何在控制台程序中获取鼠标位置?

    如何在 Windows 控制台程序中用 C 获取鼠标单击位置 点击时返回鼠标位置的变量 我想用简单的文本命令绘制一个菜单 这样当有人点击时 游戏就会注册它并知道位置 我知道如何做我需要做的一切 除了单击时获取鼠标位置 您需要使用 Conso
  • 使用C标准数学库精确计算标准正态分布的CDF

    标准 C 数学库不提供计算标准正态分布 CDF 的函数 normcdf 然而 它确实提供了密切相关的函数 误差函数 erf 和互补误差函数 erfc 计算 CDF 的最快方法通常是通过误差函数 使用预定义常量 M SQRT1 2 来表示 d

随机推荐

  • 带省略号的函数原型[重复]

    这个问题在这里已经有答案了 我想知道下面的函数原型是否有效 它编译得很好 但是这三个时期有点让我失望 我在谷歌上找不到类似的东西 void foo int Thanks 是的 这是有效的 在这个例子中 使用创建一个可变参数函数va list
  • 使用 VPAID JavaScript API 的广告示例 [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在努力寻找 HTML5 VAST VPAID 广告的示例 IAB 的VPAID规格 http ww
  • 如何调用在文本变量中具有名称的类构造函数? [Python]

    假设我们在全局命名空间中定义了一些可用的类 在示例中 class Point def init self x y self x x self y y class Vector def init self alpha r self x r c
  • 有没有办法确保线程分配给指定的对象集?

    我们正在开发一个应用程序 其中一组对象可能会受到来自 3 个不同源的消息的影响 每条消息 来自任何源 都有一个对象作为其目标 每个消息接收器将在其自己的线程上运行 我们希望消息的处理 接收后 尽可能高速 因此针对目标对象的消息处理将由线程池
  • 有人在生产中使用过 Jaxer 吗?

    有谁用过吗Jaxer http web archive org web 20090803092709 http www aptana com 80 Jaxer在生产环境中 我很好奇它与 php ruby 等相比如何表现 以及是否有人知道使用
  • 如何在交易视图的 PINE 图中使用不同的字符串文字?

    我的情节定义如下 plotshape xvalue location location absolute style shape labeldown color red size size tiny text Upper 这里的问题是部分文
  • 如何在 Intellij Idea 10 中运行 Scala 代码

    我有一个简单的问题 我安装了idea和scala插件 创建项目并添加想要运行的简单println Hello world 我创建 scala 脚本 添加这一行 当我运行它时 出现错误expected class or object defi
  • 创建配置文件(config.php)php的最佳方法[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在为我的项目创建一个数据库配置文件 但我不确定我的 config php 是否安全 我如何修改此脚本以实现安全连接 配置文件 索引 php
  • iOS TableView 重新加载并滚动到顶部

    第二天我无法解决表的问题 我们有一个segmentedControl 当它改变时 它也会改变表 假设控件的段中有 3 个元素 相应地有 3 个数组 这一点很重要 它们的大小不同 当segmentedControl 更改时 我需要向上滚动表格
  • 根据语言选择对齐文本视图(左-右)

    我有一个线性布局 其中包含水平排列的文本视图和编辑文本 我有一个选项可以在先前的活动中选择语言 英语和阿拉伯语 当我选择英语时 当前对齐方式很好 但是当我选择阿拉伯语时 它应该从右到左显示 这意味着 textView 位置应该向右 在布局中
  • 验证来自客户的应用内购买收据

    我阅读了 几乎 所有有关验证应用内购买的答案 实际上我已经以服务器端的方式实现了它 但管理服务器有时可能会太昂贵 理论上你可以从你的应用程序进行验证 基本上只是向 Apple 发送一个 json 并获取答案 当然 我知道在越狱设备上收据可能
  • 如何将 SQL 与 Node.JS 结合使用

    所以 我对整个后端世界相当陌生 我现在正在使用 Node js 进行编码 我有一个项目 我必须存储具有几个字段的用户 但我不知道如何用节点连接数据库并进行查询 而且 我有 WAMP 堆栈 因为我曾经编写 PHP 代码 很少 我也可以将其 M
  • 如何在 swift 中从外部框架呈现视图控制器?

    我制作了一个带有名为 AuthenticationViewController h 的视图控制器和笔尖 AuthenticationViewController xib 的框架 用于测试的示例项目用于展示 AuthenticationVie
  • shared_ptr 释放[重复]

    这个问题在这里已经有答案了 可能的重复 如何从 boost shared ptr 释放指针 https stackoverflow com questions 1525764 how to release pointer from boos
  • 从父组件更改反应钩子状态

    我有一个像这样的钩子组件 import React useState from react const MyComponent props gt const value setValue useState 0 const cleanValu
  • 执行 ImageEnhance.Sharpness() 时出现“无法过滤调色板图像”错误

    我有一个 GIF 图像文件 我使用打开它PIL Image http effbot org imagingbook image htm并对其进行了一些尺寸变换 然后我尝试使用ImageSharpness Enhance http effbo
  • 在没有库的 JavaScript 中检查 IE 是否小于 9 的最佳方法

    在不使用 jQuery 或任何附加库的情况下 检测 IE 浏览器和 JavaScript 版本低于 9 的浏览器的最快 最短 最佳 方法是什么 JavaScript var ie function var undef v 3 div doc
  • 这段代码不是将值插入 SQLite 数据库吗?

    我正在为 Android 编写一个应用程序 我需要读取 txt 文件并将数据写入 SQLite 文件中 我已设法完成所有代码 但应将值插入数据库的部分无法正常工作 我给出了下面的代码 try ContentValues values new
  • 传单 - 标记未显示

    我是传单新手 在美国地图上放置标记时遇到问题 下面是我的 JSON 文件的片段 site name Chemical Minerals Reclamation city Cleveland epa id OHD980614549 npl D
  • 如何在 Mac OSX 中获取真实的日历微秒时间(自 1970 年以来的纪元)?

    请通过下面的 Qn 了解上下文 为什么 clang g 在 Mac OSX 中没有为 chrono high resolution clock now 提供正确的微秒输出 https stackoverflow com q 45882606