C++获取Unix时间戳(分别以秒和毫秒为单位)的几种方法

2023-11-15


前言

   有时需要打印当前的绝对时间,并计算时间间隔,Unix时间戳是一种很好的时间记录标准,表示从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。C++的标准库中并没有能够打印时间戳的方法,需要借助其它第三方库,在此记录了几种方法

正文

1、调用ctime库

#include <iostream>
#include <ctime>
 
int main()
{
    std::time_t t = std::time(0);  // t is an integer type
    std::cout << t << " seconds since 01-Jan-1970\n";
    return 0;
}

输出为:

1467214075 seconds since 01-Jan-1970

该方法只适用于表示以秒为单位的Unix时间戳。

2、调用chrono

#include <iostream>
#include <chrono>
 
int main()
{
 
    std::chrono::milliseconds ms = std::chrono::duration_cast< std::chrono::milliseconds >(
        std::chrono::system_clock::now().time_since_epoch()
    );
 
    std::cout << ms.count() << std::endl;
    return 0;
}

输出以毫秒为单位的时间戳:

1644848307026

如果想得到以秒为单位的时间戳,只需将milliseconds换成seconds即可。

3、调用sys/timeb.h

#include <iostream>
#include <sys/timeb.h>
 
int main()
{
    timeb t;
    ftime(&t);
    long now = t.time * 1000 + t.millitm;
    std::cout << now << std::endl;
    return 0;
}

输出以毫秒为单位的时间戳:

1644848305625

如果想得到以秒为单位的时间戳,需要修改成如下形式:

#include <iostream>
#include <sys/timeb.h>
 
int main()
{
    timeb t;
    ftime(&t);
    int now = t.time;
    std::cout << now << std::endl;
    return 0;
}

输出为:

1644848308

总结

  以上三种方法最终得到的都是Unix时间戳,其中以ctime库的方法使用最为简单,但只能得到以秒为单位的时间戳,具体使用看需求。
  后续有其它方法再不断进行更新。

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

C++获取Unix时间戳(分别以秒和毫秒为单位)的几种方法 的相关文章

  • Qt 图表和数据可视化小部件

    我已经安装了 Qt 5 7 来尝试 Qt 图表和 Qt 数据可视化 但我在 Qt Designer 和 Qt Creator 中都找不到新的小部件 有什么建议我应该做什么才能让新的小部件出现在设计器中 我今天遇到了完全相同的问题 默认情况下
  • 是否有可能劫持标准输出

    我正在尝试使用 C 重定向 Windows XP 上已运行进程的标准输出 我知道如果我自己生成进程 我可以做到这一点 但对于这个应用程序 我更喜欢一个 监听器 我可以附加到另一个进程 这在纯 Net 中可能吗 如果不可能 在 Win32 中
  • 为什么我会收到未找到分析器的警告?

    我创建了一个玩具项目来检查最新的 NET 7 预览版 5 和正则表达式代码生成 它效果很好 所以我对现有项目应用了相同的更改 不是为了生产 而是为了个人生产力 由于某种原因 我收到这些警告 CS8032 An instance of ana
  • 使用 Json.NET 序列化子类

    我正在尝试使用 Json NET 序列化子类 生成的 json 包含超类的序列化属性 但是not子类对象的属性 这似乎与我发现的一个问题有关这里就这样 https stackoverflow com q 5863496 498969 但必须
  • 生成多个随机数

    我想生成 25 个唯一的随机数并将它们列在控制台中 数字的长度应至少为 10 个字符 有什么简单的方法可以做到这一点吗 尝试将数字构建为字符串 并使用 HashSet 确保它们是唯一的 Random random new Random Ha
  • 如何从 Qt 应用程序通过 ODBC 连接到 MySQL 数据库?

    我有一个新安装的 MySQL 服务器 它监听 localhost 3306 从 Qt 应用程序连接到它的正确方法是什么 原来我需要将MySQL添加到ODBC数据源 我在遵循这个视频教程后做到了这一点 https youtu be K3GZi
  • Monotouch全局异常处理

    我在野外发现了一只令人讨厌的虫子 但我无法确定它的具体情况 有没有办法拥有全局 Try Catch 块 或者有办法处理 Monotouch 中未处理的任何异常 我可以包起来吗UIApplication Main args 在 try cat
  • 无法加载程序集问题

    我收到以下错误 无法加载程序集 错误详细信息 System BadImageFormatException 无法加载文件或程序集 文件 或其依赖项之一 该程序集是由比当前加载的运行时更新的运行时构建的 无法加载 该程序集是使用 Net Fr
  • opencv中如何去除二值图像噪声?

    将图像转换为二值图像 黑白 后如果有任何噪音怎么办 我消除了那些不需要的噪音 您可以看到下图的黑色区域内有一些白噪声 我该如何去除噪声 使用opencv http img857 imageshack us img857 999 blackn
  • Visual Studio 中列表框的上移、下移按钮[重复]

    这个问题在这里已经有答案了 我正在尝试制作一个上移按钮和一个下移按钮 以移动 Microsoft Visual Studio 2012 中列表框中的选定项目 我已经在 WDF jquery winforms 和其他一些表单中看到了其他示例
  • 如何减少 MinGW g++ 编译器生成的可执行文件的大小?

    我有一个简单的 Hello world C 程序 在 Win XP 下由 MinGW g 编译器编译为 500kB 可执行文件 有人说这是由于iostream的库和静态链接libstdc dll Using s链接器选项有点帮助 减少了 5
  • 控制台应用程序中使用 Unicode 字符的 _tprintf

    我正在从 Unicode 构建的控制台应用程序 使用 C 和 Visual Studio 2008 执行这个简单的输出 此代码旨在在 Windows 上运行 tprintf L Some sample string n 一切正常 但是如果我
  • 如何自定义 Google 测试失败消息?

    我编写了一个如下所示的 Google 测试 它将一些计算值与 CSV 文件中预期存储的值进行比较 class SampleTest public testing Test public void setupFile const std st
  • 我在使用 ado.net 时收到错误 Argument 2 may not be pass with ref keywords

    int t 0 cmd Parameters AddWithValue Res ref t 我在第二行收到错误 参数 2 不能与 ref 关键字一起传递 您只能通过引用传递参数ref if the 范围 is a ref参数也是如此 Add
  • 在 C# 中使用命名空间别名有什么好处? [复制]

    这个问题在这里已经有答案了 使用命名空间别名有什么好处 仅仅是为了简化编码吗 仅当与类发生冲突时我才使用名称空间别名 对我来说 这根本没有简化 我的意见是 如果没有必要 就不要使用
  • 当需要不同数量和类型的参数时如何创建操作委托列表

    我们有一组大约两打的类 它们继承自具有抽象 Validate 方法的基类 当然 每个类都有不同的验证需求 但它们之间的不同组合需要规则 因此 正如您可以想象的那样 这导致了大量代码重复 例如 A 类需要规则 1 3 6 和 9B 类需要规则
  • DataGridView 行背景颜色没有改变

    我想根据加载时的特定条件更改 DGV 行的背景颜色 即使在 Windows 窗体中也是如此 但我看不到任何 DGV 行的颜色有任何变化 谁能告诉我如何解决这个问题 private void frmSecondaryPumps Load ob
  • Type.GetInterfaces() 仅适用于声明的接口

    首先 像这样的问题有很多 也许有些OP甚至在问同样的问题 问题是这些问题的答案 无论是否接受 都没有真正回答这个问题 至少我找不到 如何确定类直接声明的接口 而不是由父级或声明的接口继承的接口 e g interface I interfa
  • 为什么在构造函数中设置字段是(或不是)线程安全的?

    假设您有一个像这样的简单类 class MyClass private readonly int a private int b public MyClass int a int b this a a this b b public int
  • 使用 CodeDOM 将程序集添加到 BuildManager 会导致间歇性错误

    我正在使用 CodeDOM 在运行时创建内存中程序集 如下所示 public Assembly Compile CodeCompileUnit targetUnit string path Path GetDirectoryName new

随机推荐

  • DMX512协议是什么 DMX512数字灯光控制系统介绍

    基于DMX512控制协议进行调光控制的灯光系统叫做数字灯光系统 目前 包括电脑灯在内的各种舞台效果灯 调光控制器 控制台 换色器 电动吊杆等各种舞台灯光设备 以其对DMX512协议的全面支持 已全面实现调光控制的数字化 并在此基础上 逐渐趋
  • 74HC595 使用记录 国产UTC品牌

    芯片型号 U74HC595A 数据手册时序图 实际测试时序图 通道1 595的14脚 通道2 595 的11脚 通道3 595 的9脚 结论 U74HC595A 国产 UTC品牌 数据手册与实测数据不一致
  • CentOS 7.9 64位 SCC版安装FastDfs和配置Nginx

    最近练习的项目中需要用到FastDfs 和Nginx 这里记录一下安装和配置过程 个人使用部署过程遇到了很多的坑 准备把过程记下来不然忘了 首先 购买 试用阿里云 CentOS 7 9 64位Scc版系统 进入远程桌面 由于项目较老 所以我
  • 尚硅谷电影推荐系统搭建遇到的问题及知识

    尚硅谷电影推荐系统搭建遇到的问题及知识 Hadoop ES问题 Zookeeper Flume ng Kafka Azkaban 其他 腾讯云Superset问题 需更新数据库用户 登录master节点 cd usr local servi
  • java去掉字符串的逗号_java – 从字符串数组中删除逗号

    我想执行像这样的查询 从 xyz DB 中选择ID test 其中用户在 a b 所以相应的代码就像 String s for String user selUsers s user s 从test中选择ID 其中userId在s中 以下代
  • idea中 关于thymeleaf 变量 在html中 报红 以及控制器 返回页面无法追踪的问题

    html页面thymeleaf 的 变量 报红 无法追踪 controller 无法直接追踪 页面 默认配置前缀 templates 后缀 html 可以正常运行 页面跳转以及变量的传递 就是看着有点不舒服 咋办呢 我无意之间发现的 加入s
  • JVM学习笔记

    目录 垃圾回收器 垃圾回收器分类 按线程数分 按工作模式分 按碎片处理方式分 按工作的内存区间分 GC分类与性能指标 性能指标 吞吐量 性能指标 暂停时间 吞吐量vs暂停时间 垃圾回收器 垃圾回收器发展史 7种经典的垃圾收集器 垃圾回收器的
  • [人工智能-综述-3]:人工智能与硅基生命,人类终将成为造物主

    作者主页 文火冰糖的硅基工坊 https blog csdn net HiWangWenBing 本文网址 https blog csdn net HiWangWenBing article details 119061112 目录 引言
  • 145 - Table ' is marked as crashed and should be repai

    145 Table schoolhelp xyb user is marked as crashed and should be repai 145 表 schoolhelp xyb user 被标记为崩溃 应重新修 修复方式 repair
  • Html CSS学习(六)background-position背景图像的定位

    2019独角兽企业重金招聘Python工程师标准 gt gt gt Html CSS学习 六 background position背景图像的定位 在网页中 会有很多的背景图像与一些小的图标等内容 在初学的时候 为了达到页面的效果 都是将原
  • Spring Boot中如何编写优雅的单元测试

    单元测试是指对软件中的最小可测试单元进行检查和验证 在Java中 单元测试的最小单元是类 通过编写针对类或方法的小段代码 来检验被测代码是否符合预期结果或行为 执行单元测试可以帮助开发者验证代码是否正确实现了功能需求 以及是否能够适应应用环
  • Log4j2之JNDI注入(CVE-2021-44228)

    前言 首先要了解什么是Log4j2 Log4j2是一个Java日志组件 主要用于对日志的记录 这次漏洞出现在Log4j2的Lookup功能 使用Lookup可以在日志中添加动态的值 这些变量可以是外部环境变量 也可以是MDC中的变量 还可以
  • 海量数据库(详解缓存处理方法)

    缓存处理大数据 缓存就是将从数据库中获取的结果暂时保存起来在下次使用的时候无需重新到数据库中获取 从而降低数据库的压力 缓存的使用方式可以分为通过程序直接将数据库数据保存到内存中和使用缓存框架两种方式 它主要用于数据变化不是很频繁的情况 而
  • OR36 链表的回文结构

    OR36 链表的回文结构 较难 通过率 29 47 时间限制 3秒 空间限制 32M 知识点 链表栈 描述 对于一个链表 请设计一个时间复杂度为O n 额外空间复杂度为O 1 的算法 判断其是否为回文结构 给定一个链表的头指针A 请返回一个
  • python中抽象类和抽象方法_在Python中定义和使用 抽象类及抽象方法 抽象属性

    原文链接 http www jb51 net article 87710 htm 本文根据自己的理解和思考 对原文略有改动 Python中我们可以使用abc模块来构建抽象类 在讲抽象类之前 先说下抽象方法的实现 抽象方法是基类中定义的方法
  • 【MMDet Note】MMDetection中Neck之FPN代码理解与解读

    文章目录 前言 一 总概 二 代码解读 1 FPN类 2 def forward 总结 前言 mmdetection mmdet models necks fpn py中FPN类的个人理解与解读 一 总概 本文以mmdetection co
  • vscode快捷键(全局搜索等

    vscode其实有强大的快捷键搜索功能 全部快捷键可以参考官网 Visual Studio Code Key Bindings Mac快捷键 https code visualstudio com shortcuts keyboard sh
  • 【IDEA】idea Gradle 里面java类显示为灰色

    文章目录 1 概述 2 第一步 1 概述 IDEA下导入了es源码 并且编译成功 参考 Elasticsearch es 6 8 编译成功 但是看源码的时候 却发现部分为黑色 2 第一步 找到父项目 点击右键 选择Open Module S
  • 睿智的目标检测36——Pytorch搭建Efficientdet目标检测平台

    睿智的目标检测33 Pytorch搭建Efficientdet目标检测平台 学习前言 什么是Efficientdet目标检测算法 源码下载 Efficientdet实现思路 一 预测部分 1 主干网络介绍 2 BiFPN加强特征提取 3 从
  • C++获取Unix时间戳(分别以秒和毫秒为单位)的几种方法

    文章目录 前言 正文 1 调用ctime库 2 调用chrono 3 调用sys timeb h 总结 前言 有时需要打印当前的绝对时间 并计算时间间隔 Unix时间戳是一种很好的时间记录标准 表示从1970年1月1日 UTC GMT的午夜