std::chrono获取当前秒级/毫秒级/微秒级/纳秒级时间戳
当前时间戳获取方法
先使用std::chrono获取当前系统时间,然后将当前系统时间转换为纪元时间std::time_t类型,之后使用std::localtime对std::time_t类型转换为本地时间结构体std::tm类型,最后使用strftime对时间进行格式化输出。
其中std::tm该结构包含了一个被分解为以下各部分的日历时间:
struct tm {int tm_sec; // 秒,范围从 0 到 59int tm_min; // 分,范围从 0 到 59int tm_hour; // 小时,范围从 0 到 23int tm_mday; // 一月中的第几天,范围从 1 到 31int tm_mon; // 月份,范围从 0 到 11int tm_year; // 自 1900 起的年数int tm_wday; // 一周中的第几天,范围从 0 到 6int tm_yday; // 一年中的第几天,范围从 0 到 365int tm_isdst; // 夏令时
};
而size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr)函数根据format中定义的格式化规则,格式化结构timeptr表示的时间,并把它存储在str中。
size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr)
函数参数
- str - 这是指向目标数组的指针,用来复制产生的 C 字符串
- maxsize - 这是被复制到 str 的最大字符数
- format – 这是C字符串,包含了普通字符和特殊格式说明符的任何组合。
这些格式说明符由函数替换为表示tm中所指定时间的相对应值,具体的格式说明符如下所示:
| 格式说明符 | 意义 | 例子 |
|---|---|---|
| %a | 缩写的星期几名称 | Sun |
| %A | 完整的星期几名称 | Sunday |
| %b | 缩写的月份名称 | Mar |
| %B | 完整的月份名称 | March |
| %c | 日期和时间表示法 | Sun Aug 19 02:56:02 2012 |
| %C | 年份的前两位数字 | |
| %d | 一月中的第几天(01-31) | 19 |
| %D | 月/天/年 | |
| %e | 在两字符域中,十进制表示的每月的第几天 | |
| %F | 年-月-日 | |
| %g | 年份的后两位数字,使用基于周的年 | |
| %G | 年份,使用基于周的年 | |
| %h | 简写的月份名 | |
| %H | 24 小时格式的小时(00-23) | 14 |
| %I | 12 小时格式的小时(01-12) | 05 |
| %j | 一年中的第几天(001-366) | 231 |
| %m | 十进制数表示的月份(01-12) | 08 |
| %M | 分(00-59) | 55 |
| %p | AM 或 PM 名称 | PM |
| %r | 12小时的时间 | |
| %R | 显示小时和分钟:hh:mm | |
| %S | 秒(00-61) | 02 |
| %t | 水平制表符 | |
| %T | 显示时分秒:hh:mm:ss | |
| %u | 每周的第几天,星期一为第一天 (值从1到7,星期一为1) | |
| %U | 一年中的第几周,以第一个星期日作为第一周的第一天(00-53) | 33 |
| %V | 每年的第几周,使用基于周的年 | |
| %w | 十进制数表示的星期几,星期日表示为 0(0-6) | 4 |
| %W | 一年中的第几周,以第一个星期一作为第一周的第一天(00-53) | 34 |
| %x | 日期表示法 | 08/19/12 |
| %X | 时间表示法 | 02:50:06 |
| %y | 年份,最后两个数字(00-99) | 01 |
| %Y | 年份 | 2012 |
| %Z | 时区的名称或缩写 | CDT |
| %% | 一个 % 符号 | % |
获取当前时间戳函数
获取当前时间戳函数如下,函数形式:
std::string GetCurrentTimeStamp(int time_stamp_type = 0)
函数参数
- time_stamp_type - 需要获取的时间戳的级别,0表示秒级时间戳,1表示毫秒级时间戳,2表示微秒级时间戳,3表示纳秒级时间戳
函数返回值返回当前时间戳字符串。
该函数使用示例如下:
#include <ctime>
#include <string>
#include <chrono>
#include <sstream>
#include <iostream>
std::string GetCurrentTimeStamp(int time_stamp_type = 0)
{std::chrono::system_clock::time_point now = std::chrono::system_clock::now();std::time_t now_time_t = std::chrono::system_clock::to_time_t(now);std::tm* now_tm = std::localtime(&now_time_t);char buffer[128];strftime(buffer, sizeof(buffer), "%F %T", now_tm);std::ostringstream ss;ss.fill('0');std::chrono::milliseconds ms;std::chrono::microseconds cs;std::chrono::nanoseconds ns;switch (time_stamp_type){case 0:ss << buffer;break;case 1:ms = std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch()) % 1000;ss << buffer << ":" << ms.count();break;case 2:ms = std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch()) % 1000;cs = std::chrono::duration_cast<std::chrono::microseconds>(now.time_since_epoch()) % 1000000;ss << buffer << ":" << ms.count() << ":" << cs.count() % 1000;break;case 3:ms = std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch()) % 1000;cs = std::chrono::duration_cast<std::chrono::microseconds>(now.time_since_epoch()) % 1000000;ns = std::chrono::duration_cast<std::chrono::nanoseconds>(now.time_since_epoch()) % 1000000000;ss << buffer << ":" << ms.count() << ":" << cs.count() % 1000 << ":" << ns.count() % 1000;break;default:ss << buffer;break;}return ss.str();
}
int main()
{std::cout << GetCurrentTimeStamp(0) << std::endl;std::cout << GetCurrentTimeStamp(1) << std::endl;std::cout << GetCurrentTimeStamp(2) << std::endl;std::cout << GetCurrentTimeStamp(3) << std::endl;return 0;
}
结果输出:
2022-05-27 14:35:58
2022-05-27 14:35:58:879
2022-05-27 14:35:58:879:200
2022-05-27 14:35:58:879:200:100
相关文章:
std::chrono获取当前秒级/毫秒级/微秒级/纳秒级时间戳
当前时间戳获取方法 先使用std::chrono获取当前系统时间,然后将当前系统时间转换为纪元时间std::time_t类型,之后使用std::localtime对std::time_t类型转换为本地时间结构体std::tm类型,最后使用strftime对时间进行格式化输出。 其中std::t…...
sh文件介绍及linux下执行
Shell脚本是一种用于自动化任务和系统管理的脚本语言。它允许用户通过命令行界面执行一系列命令,从而简化了重复性任务的处理过程。 以下是关于Shell脚本的一些基本概念: 1. Shell脚本通常以“.sh”扩展名保存,例如“script.sh”。 2. Shell…...
js-cookie使用 js深度克隆(判断引用类型是数组还是对象的方法)
cookie和深度拷贝的使用 1、js-cookie使用2、js深度克隆 1、js-cookie使用 前端的本地存储分为 localstorage、sesstionstorage、cookie 但是咱们有时候需要做7天免登录的需求时,选择 cookie 作为前端的本地存储是在合适不过的了 直接操作 cookie 可以, …...
[Pytorch]语义分割任务分类的实现
文章目录 [Pytorch]语义分割任务分类的实现 [Pytorch]语义分割任务分类的实现 假如我们定义了一个网络用于语义分割任务,这个网络简称为model() 语义分割任务要做的是: 对于一个图片输入input,大小为(B,C,…...
测试网页调用本地可执行程序(续:带参数调用)
前篇文章介绍了网页调用本地可执行程序的方式,通过在注册表中注册命令,然后在网页中调用命令启动本地程序。如果需要传递参数,则需要在注册表命令中的command项中设置如下形式的值。 "XXXXXX\XXXXXXX.exe" "%1"&emsp…...
Carla自动驾驶模拟器安装和使用
Carla自动驾驶模拟器安装和使用 1 安装 ubuntu20.04安装carla0.9.11版本 步骤1:打开下面链接,点击第一个[Ubuntu] CARLA_0.9.11.tar.gz carla-0.9.11源码下载 步骤2:下载完解压到/opt目录下 我的话是先在下载目录上提取解压,然…...
【每日一题】1539. 第 k 个缺失的正整数
1539. 第 k 个缺失的正整数 - 力扣(LeetCode) 给你一个 严格升序排列 的正整数数组 arr 和一个整数 k 。 请你找到这个数组里第 k 个缺失的正整数。 示例 1: 输入:arr [2,3,4,7,11], k 5 输出:9 解释:缺失…...
AI-Chat,一款集全网ai功能的应用(附下载链接)
AI-Chat是一款综合性的聊天机器人,集成了多种先进的模型和功能。它采用了GPT4.0、联网版GPT和清华模型等多种模型,使得其具备更强大的语言处理能力。同时,AI-Chat还融合了AI绘画模型,例如Stable Diffusion绘画、文生图、图生图、艺…...
3、靶场——Pinkys-Place v3(3)
文章目录 一、获取flag41.1 关于SUID提权1.2 通过端口转发获取setuid文件1.3 运行pinksecd文件1.4 利用nm对文件进行分析1.5 构建payload1.6 Fire 二、获取flag52.1 生成ssh公钥2.2 免密登录ssh2.3 以pinksecmanagement的身份进行信息收集2.4 测试程序/usr/local/bin/PSMCCLI2.…...
什么是 AirServer?Mac专用投屏工具AirServer 7 .27 for Mac中文破解版百度网盘下载
AirServer 7 .27 for Mac中文免费激活版是一款Mac专用投屏工具,能够通过本地网络将音频、照片、视频以及支持AirPlay功能的第三方App,从 iOS 设备无线传送到 Mac 电脑的屏幕上,把Mac变成一个AirPlay终端的实用工具。 目前最新的AirServer 7.2…...
MapStruct介绍以及VO、DTO、PO、DO的区别
文章目录 一.基本概念1.1VO**(Value Object)值对象**1.2DTO**(Data Transfer Object)数据传输对象**1.3 PO**(Persistant Object)持久对象**等同于Entity,这俩概念是一致的 或DO1.4 **BO&#x…...
记一次hyperf框架封装swoole自定义进程
背景 公司准备引入swoole和rabbitmq来处理公司业务。因此,我引入hyperf框架,想用swoole的多进程来实现。 自定义启动服务封装 <?php /*** 进程启动服务【manager】*/ declare(strict_types1);namespace App\Command;use Swoole; use Swoole\Proce…...
多输入多输出 | MATLAB实现GA-BP遗传算法优化BP神经网络多输入多输出
多输入多输出 | MATLAB实现GA-BP遗传算法优化BP神经网络多输入多输出 目录 多输入多输出 | MATLAB实现GA-BP遗传算法优化BP神经网络多输入多输出预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 多输入多输出 | MATLAB实现GA-BP遗传算法优化BP神经网络多输入多输出…...
李宏毅机器学习笔记-transformer
transformer是什么呢?是一个seq2seq的model。具体应用如上图所示,输入和输出的序列长度不固定,由model自己决定。 语音翻译指的是,直接输入一段语音信号,例如英文,输出的直接是翻译之后的中文。 seq2seq如…...
基于Java的酒店管理系统
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...
Go语言的单元测试与基准测试详解
文章目录 单元测试基准测试 单元测试 以一个加法函数为例,对其进行单元测试。 首先编写add.go文件: //add.go package mainfunc add(a, b int) int {return a b }其次编写add_test.go文件,在go语言中,测试文件均已_test结尾&a…...
【多态】为什么析构函数的名称统一处理为destructor?
析构函数的名称统一处理为destructor的目的是为了解决析构函数的重写。 而这又引出了一个问题:为什么要进行析构函数的重写? 是为了下面这种情况: class Person { public:~Person() { cout << "~Person" << endl; } }…...
6.4 Case Studies - A Simple Logging Archive Class
下面这段内容介绍了一个示例,目的是帮助澄清"归档概念(Archive Concept)"的用法,以便用户可以实现自己的归档类。simple_log_archive.hpp 实现了一个简单但实用的归档类,用于将任何可序列化类型以可读的格式…...
【深度学习实验】前馈神经网络(九):整合训练、评估、预测过程(Runner)
目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. __init__(初始化) 2. train(训练) 3. evaluate(评估) 4. predict(预测) 5. save_model 6. load_model 7. 代码整合 一、实验介绍 二、实验环境 本系列实验使用…...
002-第一代硬件系统架构确立及产品选型
第一代硬件系统架构确立及产品选型 文章目录 第一代硬件系统架构确立及产品选型项目介绍摘要硬件架构硬件结构选型及设计单片机选型上位机选型扯点别的 关键字: Qt、 Qml、 信号采集机、 数据处理、 上位机 项目介绍 欢迎来到我们的 QML & C 项目ÿ…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
QT开发技术【ffmpeg + QAudioOutput】音乐播放器
一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下,音视频内容犹如璀璨繁星,点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频,到在线课堂中知识渊博的专家授课,再到影视平台上扣人心弦的高清大片,音…...
从零开始了解数据采集(二十八)——制造业数字孪生
近年来,我国的工业领域正经历一场前所未有的数字化变革,从“双碳目标”到工业互联网平台的推广,国家政策和市场需求共同推动了制造业的升级。在这场变革中,数字孪生技术成为备受关注的关键工具,它不仅让企业“看见”设…...
小智AI+MCP
什么是小智AI和MCP 如果还不清楚的先看往期文章 手搓小智AI聊天机器人 MCP 深度解析:AI 的USB接口 如何使用小智MCP 1.刷支持mcp的小智固件 2.下载官方MCP的示例代码 Github:https://github.com/78/mcp-calculator 安这个步骤执行 其中MCP_ENDPOI…...
React父子组件通信:Props怎么用?如何从父组件向子组件传递数据?
系列回顾: 在上一篇《React核心概念:State是什么?》中,我们学习了如何使用useState让一个组件拥有自己的内部数据(State),并通过一个计数器案例,实现了组件的自我更新。这很棒&#…...
第6章:Neo4j数据导入与导出
在实际应用中,数据的导入与导出是使用Neo4j的重要环节。无论是初始数据加载、系统迁移还是数据备份,都需要高效可靠的数据传输机制。本章将详细介绍Neo4j中的各种数据导入与导出方法,帮助读者掌握不同场景下的最佳实践。 6.1 数据导入策略 …...
