当前位置: 首页 > article >正文

GetCurrentTime

在实际编程中难免要获取当前时间并且进行格式化,本文给出了多种 GetCurrentTime() 方法以供选择。

C语言下使用strftime

C 语言中可以使用 <time.h> 中的函数来获取和格式化时间

#include <stdio.h>
#include <time.h>char* getCurrentTime() {static char buffer[100];time_t now_time = time(NULL);struct tm* local_time = localtime(&now_time);strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", local_time);return buffer;
}int main() {printf("Current Time: %s\n", getCurrentTime());return 0;
}

优点
• 简单直接,兼容性好。
• 无需额外依赖。

缺点
• 需要手动管理缓冲区。

C++11 方法

C++11 引入了 <chrono><iomanip>,提供了更现代化的时间处理方式。

#include <iostream>
#include <iomanip>
#include <sstream>
#include <chrono>
#include <ctime>std::string getCurrentTime() {auto now = std::chrono::system_clock::now();std::time_t now_time = std::chrono::system_clock::to_time_t(now);std::tm local_time = *std::localtime(&now_time);std::ostringstream oss;oss << std::put_time(&local_time, "%Y-%m-%d %H:%M:%S");return oss.str();
}int main() {std::cout << "Current Time: " << getCurrentTime() << std::endl;return 0;
}

优点
• 类型安全,无需手动管理缓冲区。
• 使用标准库函数,代码更简洁。

缺点
• 代码稍显冗长。

c++20

C++20 引入了 std::formatstd::chrono::format,提供了更简洁的格式化方式。

#include <iostream>
#include <chrono>
#include <format>std::string getCurrentTime() {auto now = std::chrono::system_clock::now();return std::format("{:%Y-%m-%d %H:%M:%S}", now);
}int main() {std::cout << "Current Time: " << getCurrentTime() << std::endl;return 0;
}

优点
• 代码简洁,现代化。
• 支持多种格式化方式。

缺点
• 需要 C++20 支持。

使用第三方库fmt

fmt 是一个功能强大的格式化库,支持 C++11 及以上版本。

#include <iostream>
#include <chrono>
#include <fmt/core.h>
#include <fmt/chrono.h>std::string getCurrentTime() {auto now = std::chrono::system_clock::now();return fmt::format("{:%Y-%m-%d %H:%M:%S}", now);
}int main() {std::cout << "Current Time: " << getCurrentTime() << std::endl;return 0;
}

优点
• 功能强大,支持 C++11 及以上版本。
• 代码简洁,类似于 C++20 的 std::format

缺点
• 需要引入第三方库。

使用 Boost 库

Boost 是一个功能丰富的 C++ 库,提供了时间处理工具。

#include <iostream>
#include <boost/date_time/posix_time/posix_time.hpp>std::string getCurrentTime() {boost::posix_time::ptime now = boost::posix_time::second_clock::local_time();return boost::posix_time::to_simple_string(now);
}int main() {std::cout << "Current Time: " << getCurrentTime() << std::endl;return 0;
}

优点
• 功能强大,支持多种时间操作。

缺点
• 需要引入 Boost 库。

**

方法优点缺点
C 语言 strftime简单直接,兼容性好需要手动管理缓冲区
C++11 std::put_time类型安全,无需额外依赖代码稍显冗长
C++20 std::format简洁、现代化,支持多种格式化方式需要 C++20 支持
fmt功能强大,支持 C++11 及以上版本,类似 C++20需要引入第三方库
Boost 库功能丰富,支持多种时间操作需要引入 Boost 库

根据你的项目需求和编译器支持情况,选择最适合的方案。如果可以使用 C++20,std::format 是最佳选择;否则,std::put_timefmt 库都是很好的替代方案。

相关文章:

GetCurrentTime

在实际编程中难免要获取当前时间并且进行格式化&#xff0c;本文给出了多种 GetCurrentTime() 方法以供选择。 C语言下使用strftime C 语言中可以使用 <time.h> 中的函数来获取和格式化时间 #include <stdio.h> #include <time.h>char* getCurrentTime() …...

计算机的结构形式

微机的机构形式 台式个人微机 最开始的微机&#xff08;计算机&#xff09;都是台式的&#xff0c;到目前为止仍是个人微机的主要形式。台式机按照电脑机箱的放置形式&#xff0c;分为卧式和立式两种。台式机需要放在桌面上或者留有专门放置机箱位置&#xff0c;他的主机、键…...

SSL/TLS 1.2过程:Client端如何验证服务端证书?

快速回顾非对称加密和对称加密 首先快速说一下非对称加密和对称加密。非对称加密&#xff0c;就是有一个公钥和私钥(成对存在)。 公钥对一段文本A加密得到文本B&#xff0c;只有对应的私钥能对B解密得到A。 私钥对一段文本C加密得到文本D&#xff0c;只有对应的公钥能对D解密得…...

Python(学习一)

做网站有成熟的框架像FLASK、DJANGO、TORNADO&#xff0c;写爬虫有好用到哭的REQUESTS&#xff0c;还有强大到没盆友的SCRAPY 随着NUMPY、SCIPY、MATLOTLIB等众多第三方模块的开发和完善&#xff0c;不仅支持py支持各种数学运算&#xff0c;还可以绘制高质量的2D和3D图像&…...

Java中类和对象

类和对象 面向对象的认识类的定义和使用1 类的定义2 类的创建3 类的实例化 构造方法1 构造方法的概念2 构造方法的注意事项 this关键字 面向对象的认识 前言 何为面向对象何为面向过程呢&#xff1f;&#xff0c;C语言是最经典的面向过程的语言,但是C语言虽然可以解决一定的问…...

文本组件+Image组件+图集

Canvas部分知识补充 元素渲染顺序 以Hierarchy参考 下方物体在上方物体前显示 子物体在父物体前显示 下方物体永远在前显示&#xff0c;无论上方的层次结构 资源导入 绝对路径&#xff1a;C:\Windows\Fonts下的许多字体可以用做UIText的字体资源 图片导入&#xff1a; 1.图…...

Audacity 技术浅析(一)

Audacity 是一个开源的音频编辑工具&#xff0c;虽然它主要用于音频编辑和处理&#xff0c;但也可以通过一些插件和功能实现基本的音频生成功能。 1. Audacity 的音频生成基础 Audacity 的音频生成主要依赖于其内置的生成器、效果器以及 Nyquist 编程语言。这些工具允许用户创…...

PyCharm 2019.1.3使用python3.9创建虚拟环境setuptools-40.8.0报错处理

目录 前置&#xff1a; 一劳永逸方法&#xff08;缺最后一步&#xff0c;没有成行&#xff09; step one: 下载高版本的pip、setuptools、virtualenv的tar.gz包 step two: 进入PyCharm安装目录的 helpers 目录下 step three: 下载并安装grep和sed命令&#xff0c;然后执行 …...

敏捷开发在中小团队中的应用与挑战:实战指南与避坑手册

文章目录 敏捷开发在中小团队中的应用与挑战&#xff1a;实战指南与避坑手册引言&#xff1a;为什么中小团队更需要敏捷&#xff1f;一、敏捷开发适配中小团队的底层逻辑1.1 中小团队的典型特征1.2 敏捷开发的价值放大器效应 二、敏捷实施的五大实战步骤2.1 团队定制化改造&…...

服务器部署RocketMQ----Docker方式

拉取镜像并创建docker network 按照官方文档提供的方式拉取镜像&#xff1a;docker pull apache/rocketmq:4.9.6 创建一个docker网络&#xff1a;docker network create rocketmq 启动NameServer以及Broker 启动NameServer # 启动NameServer docker run -d --name rmqnames…...

【推荐项目】052-用水监控管理系统

052-用水监控管理系统 介绍 用水监控管理系统 springboot java vuejs jdk1.8 当然&#xff0c;以下是一个简洁的用水监控管理系统的功能模块划分&#xff0c;基于Spring Boot&#xff08;JDK 1.8&#xff09;后端和Vue.js前端&#xff1a; 用水监控管理系统功能模块 后端&…...

零基础上手Python数据分析 (2):Python核心语法快速入门

写在前面 场景:每周销售数据报表整理 任务描述: 你需要每周从多个Excel文件中汇总销售数据,计算各项指标(销售额、订单量、客单价等),并生成周报。Excel操作痛点: 文件太多,手动打开复制粘贴,效率低下,容易出错。 多个Excel文件,每个都要打开、筛选、复制数据,重复…...

大模型MCP协议与Function Calling:构建更智能的AI生态系统

随着大型语言模型&#xff08;LLM&#xff09;的快速发展&#xff0c;如何高效地将这些模型与外部数据源、工具和服务进行集成&#xff0c;成为了一个亟待解决的问题。Anthropic推出的Model Context Protocol&#xff08;MCP协议&#xff09;和Function Calling技术为此提供了有…...

【C++】RAII机制

什么是RAII机制&#xff1f; RAII&#xff08;Resource Acquisition Is Initialization&#xff09;是 C 中的一种重要编程范式&#xff0c;用于管理资源&#xff08;如内存、文件句柄、网络连接等&#xff09;的生命周期。 RAII 的核心思想是&#xff1a;资源的获取与初始化绑…...

游戏引擎学习第160天

回顾和今天的计划 我们没有使用任何游戏引擎和库&#xff0c;完全靠我们自己&#xff0c;使用的是老式的编程方式。 我们已经构建了很多内容&#xff0c;游戏引擎开发也慢慢接近尾声。现在我们已经接近完成了所有为支持游戏开发所需要的工作&#xff0c;接下来将逐步过渡到游戏…...

Webpack 知识点整理

​ 1. 对 webpack 的理解&#xff1f;解决了什么问题&#xff1f; Webpack 是前端工程化领域的核心工具&#xff0c;其核心定位是模块打包器&#xff08;Module Bundler&#xff09;&#xff0c;通过将各类资源&#xff08;JS、CSS、图片等&#xff09;视为模块并进行智能整合…...

从零搭建微服务项目Pro(第2-2章——JSR303自定义文件校验+整合至微服务公共模块)

前言&#xff1a; JSR 303&#xff0c;即 Bean Validation&#xff0c;是 Java EE 6 中的一项子规范&#xff0c;旨在为 Java Bean 提供一种标准化的数据验证机制。它通过注解的方式&#xff0c;允许开发者在 Java 类的字段或方法上直接定义验证规则&#xff0c;从而将验证逻辑…...

如何用URDF文件构建机械手模型并与MoveIt集成

机械手URDF文件的编写 我们用urdf文件来描述我们的机械手的外观以及物理性能。这里为了简便&#xff0c;就只用了基本的圆柱、立方体了。追求美观的朋友&#xff0c;还可以用dae文件来描述机械手的外形。 import re def remove_comments(text):pattern r<!--(.*?)-->…...

uv pip install -r requirements.txt-报错,python版本过低

升级Python版本&#xff08;推荐&#xff09; browser-use0.1.40 需要 Python ≥3.11&#xff0c;但你的环境是 Python 3.10.12。升级Python版本是最直接的解决方案&#xff1a; 安装Python 3.11&#xff1a; 使用 pyenv&#xff08;Linux/macOS&#xff09;&#xff1a;pyenv…...

【训练细节解读】文本智能混合分块(Mixtures of Text Chunking,MoC)引领RAG进入多粒度感知智能分块阶段

喜欢本文可以在主页订阅专栏哟 核心创新&#xff1a;双重评估指标与混合分块架构&#xff1a; 第一章&#xff1a;检索增强生成&#xff08;RAG&#xff09;技术演进与分块挑战 1.1 RAG架构的核心演变 检索增强生成&#xff08;Retrieval-Augmented Generation&#xff09…...

招聘信息|基于SprinBoot+vue的招聘信息管理系统(源码+数据库+文档)

招聘信息管理系统 目录 基于SprinBootvue的招聘信息管理系统 一、前言 二、系统设计 三、系统功能设计 5.1系统功能模块 5.2管理员功能模块 5.3企业后台管理模块 5.4用户后台管理模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、…...

HCIA-AI人工智能笔记1:大模型技术演进与发展历程

一、大模型发展的技术演进图谱 timelinetitle 大模型发展关键里程碑1958 : 感知机模型诞生&#xff08;Frank Rosenblatt&#xff09;1986 : BP反向传播算法&#xff08;Rumelhart&#xff09;2012 : AlexNet开启深度学习时代2017 : Transformer架构提出&#xff08;《Attenti…...

躲藏博弈中的策略优化:整合历史数据、概率论与博弈论

躲藏博弈中的策略优化&#xff1a;整合历史数据、概率论与博弈论 一、引言 躲藏博弈(Hiding Games)作为一类特殊的博弈模型&#xff0c;广泛存在于军事对抗、网络安全、商业竞争甚至日常生活中。其核心在于一方(躲藏者)试图避免被另一方(寻找者)发现&#xff0c;双方各自选择…...

C语言,记录一次局部变量被意外修改的问题

背景:单片机开发过程中,我在函数体内(begin_face_record)定义了一个局部变量data_length,在使用的时候,该局部变量一直别改变,每次调用其他函数,例如c库里面的函数memcpy,不知什么情况data_length值就会被改变。 1、源码分析 void main(void) { init_gpio();init_fa…...

机器学习——正则化、欠拟合、过拟合、学习曲线

过拟合&#xff08;overfitting&#xff09;:模型只能拟合训练数据的状态。即过度训练。 避免过拟合的几种方法&#xff1a; ①增加全部训练数据的数量&#xff08;最为有效的方式&#xff09; ②使用简单的模型&#xff08;简单的模型学不够&#xff0c;复杂的模型学的太多&am…...

在微信小程序或前端开发中,picker 和 select 都是用户交互中用于选择的组件,但它们在功能、设计和使用场景上有一定的区别

在微信小程序或前端开发中&#xff0c;picker 和 select 都是用户交互中用于选择的组件&#xff0c;但它们在功能、设计和使用场景上有一定的区别。 1. picker 的特点 描述&#xff1a; picker 是微信小程序中的原生组件&#xff0c;通常用于选择单项或多项值&#xff0c;如时…...

向量数据库对比以及Chroma操作

一、向量数据库与传统类型数据库 向量数据库&#xff08;Vector Storage Engine&#xff09;与传统类型的数据库如关系型数据库&#xff08;MySQL&#xff09;、文档型数据库&#xff08;MongoDB&#xff09;、键值存储&#xff08;Redis&#xff09;、全文搜索引擎&#xff0…...

Python Matplotlib面试题精选及参考答案

绘制函数 y2x5 在区间 [1,10] 的折线图&#xff0c;设置标题和坐标轴标签 要绘制函数 y 2x 5 在区间 [1, 10] 的折线图&#xff0c;并设置标题和坐标轴标签&#xff0c;可借助 Python 的 matplotlib 库来实现。以下是详细的实现步骤与代码示例。 首先&#xff0c;要导入 mat…...

FiddlerScript学习笔记

参考官方文档&#xff1a;https://www.fiddlerbook.com/fiddler/dev/scriptsamples.asp json // 反序列化 static function jsonDecode(str : String){return Fiddler.WebFormats.JSON.JsonDecode(str).JSONObject; } // 序列化 static function jsonEncode(jsonObject : Obje…...

正点原子[第三期]Arm(iMX6U)Linux移植学习笔记-5.1 uboot顶层Makefile分析-VSCode工程创建

前言&#xff1a; 本文是根据哔哩哔哩网站上“Arm(iMX6U)Linux系统移植和根文件系统构键篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。 引用&#xff1a; …...