【如何在日志中输出精确到毫秒的时间戳】

2024-06-02 08:36

本文主要是介绍【如何在日志中输出精确到毫秒的时间戳】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 需求

在日志中输出精确到毫秒级的时间戳
格式为:%Y-%m-%d %H:%M:%S.%MS
如:2024-05-30 22:33:25.821

2. 代码实现

#include <iostream>
#include <chrono>
#include <iomanip>
#include <sstream>
#include <ctime>std::string getCurrentTimeStampMs()
{// 获取当前时间auto now = std::chrono::system_clock::now();// 转换成time_tauto time_t_now = std::chrono::system_clock::to_time_t(now);// 转换为tm结构来获取日期和时间std::tm local_time;
#ifdef _WIN32localtime_s(&local_time, &time_t_now);
#elselocaltime_r(&time_t_now, &local_time);
#endif// 返回当前时间与纪元之间的时间间隔auto duration_since_epoch = now.time_since_epoch();// 将时间间隔转换为毫秒表示,得到毫秒数auto millis = std::chrono::duration_cast<std::chrono::milliseconds>(duration_since_epoch).count();// 获取毫秒部分auto milliseconds = millis % 1000;// 构造一个字符串流来格式化输出std::ostringstream oss;oss << std::put_time(&local_time, "%Y-%m-%d %H:%M:%S");oss << "." << std::setfill('0') << std::setw(3) << milliseconds;return oss.str();
}int main() {std::cout << getCurrentTimeStampMs() << std::endl;std::cout << getCurrentTimeStampMs() << std::endl;return 0;
}

输出
在这里插入图片描述

3.总结

3.1 time_t

time_t 是 C 和 C++ 中用于表示时间的类型,通常被定义为整数类型(通常是 long 或 long long)。它通常表示从某个固定的时间点(通常是 1970 年 1 月 1 日的午夜,也称为 Unix 纪元)经过的秒数,精确度只有秒级

3.2 std::chrono::system_clock

std::chrono::system_clock 是 C++11 中的一个时钟类,用于表示系统时钟。它是 C++ 标准库提供的一种高精度时钟,可以用来测量时间间隔、获取当前时间等操作。

std::chrono::system_clock 的精度取决于操作系统和编译器的实现,通常精确到纳秒级别。它提供了一系列的成员函数,用于获取当前时间、转换时间点、计算时间差等操作。

以下是一些 std::chrono::system_clock 的常用成员函数:

  • now(): 返回当前时钟的当前时间点。
  • to_time_t(): 将时间点转换为 time_t 类型,以便与 C 的时间操作函数兼容。
  • from_time_t(): 将 time_t 类型转换为时间点。
  • time_since_epoch(): 返回时间点与纪元之间的时间间隔。
  • to_utc_time(): 将时间点转换为 UTC 时间。
  • from_utc_time(): 将 UTC 时间转换为时间点。

以下是一个简单的示例,演示了如何使用 std::chrono::system_clock 获取当前时间:

#include <iostream>
#include <chrono>int main() {// 获取当前时间点auto now = std::chrono::system_clock::now();// 将时间点转换为 time_t 类型std::time_t now_time_t = std::chrono::system_clock::to_time_t(now);// 打印当前时间std::cout << "Current time: " << std::ctime(&now_time_t);return 0;
}

这篇关于【如何在日志中输出精确到毫秒的时间戳】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1023472

相关文章

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

Golang 日志处理和正则处理的操作方法

《Golang日志处理和正则处理的操作方法》:本文主要介绍Golang日志处理和正则处理的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录1、logx日志处理1.1、logx简介1.2、日志初始化与配置1.3、常用方法1.4、配合defer

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

Nacos日志与Raft的数据清理指南

《Nacos日志与Raft的数据清理指南》随着运行时间的增长,Nacos的日志文件(logs/)和Raft持久化数据(data/protocol/raft/)可能会占用大量磁盘空间,影响系统稳定性,本... 目录引言1. Nacos 日志文件(logs/ 目录)清理1.1 日志文件的作用1.2 是否可以删除

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

利用Python实现时间序列动量策略

《利用Python实现时间序列动量策略》时间序列动量策略作为量化交易领域中最为持久且被深入研究的策略类型之一,其核心理念相对简明:对于显示上升趋势的资产建立多头头寸,对于呈现下降趋势的资产建立空头头寸... 目录引言传统策略面临的风险管理挑战波动率调整机制:实现风险标准化策略实施的技术细节波动率调整的战略价

Python使用Turtle实现精确计时工具

《Python使用Turtle实现精确计时工具》这篇文章主要为大家详细介绍了Python如何使用Turtle实现精确计时工具,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录功能特点使用方法程序架构设计代码详解窗口和画笔创建时间和状态显示更新计时器控制逻辑计时器重置功能事件

使用nohup和--remove-source-files在后台运行rsync并记录日志方式

《使用nohup和--remove-source-files在后台运行rsync并记录日志方式》:本文主要介绍使用nohup和--remove-source-files在后台运行rsync并记录日... 目录一、什么是 --remove-source-files?二、示例命令三、命令详解1. nohup2.