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

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

相关文章

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测 目录 时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测基本介绍程序设计参考资料 基本介绍 MATLAB实现LSTM时间序列未来多步预测-递归预测。LSTM是一种含有LSTM区块(blocks)或其他的一种类神经网络,文献或其他资料中LSTM区块可能被描述成智能网络单元,因为

java中查看函数运行时间和cpu运行时间

android开发调查性能问题中有一个现象,函数的运行时间远低于cpu执行时间,因为函数运行期间线程可能包含等待操作。native层可以查看实际的cpu执行时间和函数执行时间。在java中如何实现? 借助AI得到了答案 import java.lang.management.ManagementFactory;import java.lang.management.Threa

时间服务器中,适用于国内的 NTP 服务器地址,可用于时间同步或 Android 加速 GPS 定位

NTP 是什么?   NTP 是网络时间协议(Network Time Protocol),它用来同步网络设备【如计算机、手机】的时间的协议。 NTP 实现什么目的?   目的很简单,就是为了提供准确时间。因为我们的手表、设备等,经常会时间跑着跑着就有误差,或快或慢的少几秒,时间长了甚至误差过分钟。 NTP 服务器列表 最常见、熟知的就是 www.pool.ntp.org/zo

20170723 做的事 ecdsa的签名验证时间短于bls signature

1 今天在虚拟机 /home/smile/Desktop/20170610/Test//time_ecdsa 文件夹下,找到ecdsa的验证时间是 989.060606μs μs 先 make ,然后run。 再取BLS的签名生成时间: ./run  2  gnuplot 画图,画对比的时间 gnuplot 画图参考教程 http://blog.sciencen

神经网络第三篇:输出层及softmax函数

在上一篇专题中,我们以三层神经网络的实现为例,介绍了如何利用Python和Numpy编程实现神经网络的计算。其中,中间(隐藏)层和输出层的激活函数分别选择了 sigmoid函数和恒等函数。此刻,我们心中不难发问:为什么要花一个专题来介绍输出层及其激活函数?它和中间层又有什么区别?softmax函数何来何去?下面我们带着这些疑问进入本专题的知识点: 1 输出层概述 2 回归问题及恒等函数 3

Python几种建表方法运行时间的比较

建立一个表[0,1,2,3.......10n],下面几种方法都能实现,但是运行时间却截然不同哦 import time#方法一def test1(n):list=[]for i in range(n*10):list=list+[i]return list#方法二def test2(n):list=[]for i in range(n*10):list.append(i)#方法三d

Sapphire开发日志 (十) 关于页面

关于页面 任务介绍 关于页面用户对我组工作量的展示。 实现效果 代码解释 首先封装一个子组件用于展示用户头像和名称。 const UserGrid = ({src,name,size,link,}: {src: any;name: any;size?: any;link?: any;}) => (<Box sx={{ display: "flex", flexDirecti

【Qt6.3 基础教程 16】 掌握Qt中的时间和日期:QTimer和QDateTime的高效应用

文章目录 前言QTimer:定时任务的强大工具QTimer的基本用法高级特性:单次定时器 QDateTime:处理日期和时间获取当前日期和时间日期和时间的格式化输出日期和时间计算 用例:创建一个倒计时应用结论 前言 在开发桌面应用程序时,处理时间和日期是一个常见且重要的任务。Qt框架提供了强大的工具来处理与时间相关的功能,其中QTimer和QDateTime是最核心的类。本

Linux之时间显示

在linux中使用使用date的方式来显示时间,但是如果想按照自己想要的格式展示,那就需要加上一点参数了 显示当前时间 date 2024年 06月 23日 星期日 23:21:42 CST 显示当前年份 date +%Y 2024 显示当前月份 date +%m 6 显示当前日期 date +%d 23 自定义显示格式 date "+%Y-%m-%d