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 项目ÿ…...
K230目标检测实战:手把手教你用Labelme标注数据并一键转成VOC格式(附避坑指南)
K230目标检测实战:高效数据标注与VOC格式转换全攻略 当你第一次接触K230开发板进行目标检测项目时,数据准备往往是最大的拦路虎。特别是从原始图片到符合AI_Cube要求的VOC格式数据集,这个过程充满了各种"坑"。本文将分享一套经过实…...
PADS 9.5资源包下载与安装教程:附最新许可证生成工具MentorKG使用指南
PADS 9.5完整资源获取与高效安装实战指南 在电子设计自动化(EDA)领域,PADS系列软件凭借其稳定的性能和友好的操作界面,始终保持着广泛的市场占有率。作为经典的9.5版本,虽然已不是最新发布,但在许多企业的标…...
OpenClaw多任务调度:GLM-4.7-Flash并行处理文件与邮件
OpenClaw多任务调度:GLM-4.7-Flash并行处理文件与邮件 1. 为什么需要多任务调度 上周我需要同时处理两个紧急任务:整理三个月积累的会议录音文字稿,以及给二十多位合作伙伴发送定制化跟进邮件。手动操作需要至少6小时,而第二天早…...
LeetDown完全指南:系统降级功能解决A6/A7设备用户的卡顿痛点
LeetDown完全指南:系统降级功能解决A6/A7设备用户的卡顿痛点 【免费下载链接】LeetDown a GUI macOS Downgrade Tool for A6 and A7 iDevices 项目地址: https://gitcode.com/gh_mirrors/le/LeetDown LeetDown是一款专为macOS设计的图形化降级工具࿰…...
3个步骤掌握FCEUX:开源NES模拟器的全方位应用指南
3个步骤掌握FCEUX:开源NES模拟器的全方位应用指南 【免费下载链接】fceux FCEUX, a NES Emulator 项目地址: https://gitcode.com/gh_mirrors/fc/fceux FCEUX是一款功能强大的开源NES模拟器(任天堂娱乐系统游戏模拟工具),以…...
保姆级教程:CLIP-GmP-ViT-L-14图文匹配工具一键部署,小白也能玩转AI识图
保姆级教程:CLIP-GmP-ViT-L-14图文匹配工具一键部署,小白也能玩转AI识图 你是不是经常好奇,AI到底是怎么看懂图片的?给它一张照片和几个文字描述,它怎么知道哪个描述最贴切?今天,我就带你亲手搭…...
s2-pro GPU算力适配实战:显存优化部署让语音合成延迟降低40%
s2-pro GPU算力适配实战:显存优化部署让语音合成延迟降低40% 1. 专业语音合成新选择 s2-pro是Fish Audio开源的专业级语音合成模型镜像,它让高质量的文本转语音变得触手可及。与普通语音合成工具不同,s2-pro支持通过参考音频复用音色&#…...
紧急通知:2024年Q3起欧盟EDPS已将差分隐私实现纳入DPIA强制审查项——Python开发者必须立即核查的4个代码检查点
第一章:差分隐私合规性背景与EDPS新规解读随着欧盟数据保护监管体系持续演进,欧洲数据保护监督机构(EDPS)于2024年7月发布《关于匿名化与假名化技术在公共部门应用的指导意见》,首次将差分隐私(Differentia…...
s2-pro部署实操:CSDN平台GPU资源监控与s2-pro服务性能关联分析
s2-pro部署实操:CSDN平台GPU资源监控与s2-pro服务性能关联分析 1. 专业语音合成工具s2-pro简介 s2-pro是Fish Audio开源的专业级语音合成模型镜像,它能够将文本转换为自然流畅的语音,并支持通过参考音频来复用特定音色。这个工具特别适合需…...
Struts2拦截器实战:从零构建权限控制与日志记录
1. Struts2拦截器机制解析 Struts2拦截器是框架最核心的机制之一,它采用AOP(面向切面编程)思想,在Action执行前后插入自定义逻辑。想象一下拦截器就像地铁安检系统:每个乘客(请求)都必须经过安检…...
