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

C/C++ let __DATE__ format to “YYYY-MM-DD“

C/C++ let DATE format to “YYYY-MM-DD”

code:

#include <iostream>
#include <string>class compileDate {// 静态函数,用来格式化并返回编译日期
static std::string formatCompileDate() {// 编译时的日期,格式为 "MMM DD YYYY"const std::string date = __DATE__;// 定义月份的映射,使用数组而非std::mapstruct MonthMap {const char* short_name;const char* num;};static const MonthMap months[] = {{"Jan", "01"}, {"Feb", "02"}, {"Mar", "03"}, {"Apr", "04"},{"May", "05"}, {"Jun", "06"}, {"Jul", "07"}, {"Aug", "08"},{"Sep", "09"}, {"Oct", "10"}, {"Nov", "11"}, {"Dec", "12"}};// 解析 `__DATE__`std::string month = date.substr(0, 3);  // 月份的前三个字母std::string day = date.substr(4, 2);    // 日期std::string year = date.substr(7, 4);   // 年份// 移除日期前的空格if (day[0] == ' ') {day = day.substr(1);}// 查找月份的数字表示const char* monthNum = "00";  // 默认为无效月份for (int i = 0; i < 12; ++i) {if (month == months[i].short_name) {monthNum = months[i].num;break;}}// 格式化输出为 YYYY-MM-DD HH:MM:SSreturn year + "-" + monthNum + "-" + (day.size() == 1 ? "0" + day : day) + " " + __TIME__;
}
public:
// 返回编译日期并只执行一次
static const std::string& formated() {static const std::string formattedDate = formatCompileDate();return formattedDate;
}
};int main() {std::cout << "Compilation date : " << compileDate::formated()<< std::endl;return 0;
}

Usage:

[root@VM-24-13-centos cpp]# g++ __DATE__.cpp
[root@VM-24-13-centos cpp]# ./a.out
Compilation date : 2024-09-10 22:26:13
[root@VM-24-13-centos cpp]#

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Ionic 头部和底部
  • C++ | Leetcode C++题解之第397题整数替换
  • Linux 远程连接与常见错误:一直输入密码,无报错或无填充
  • 通杀漏洞挖掘 | 某系统超级管理员任意密码重置
  • strcmp函数的使用和模拟实现
  • 台球助教小程序开发/APP源码部署
  • vue页面使用自定义字体
  • Redis:缓存击穿
  • 低空经济新概念
  • 1 Linux SSH安全加固_linux system-auth
  • HTML 基础,尚优选网站设计开发(二)
  • 数据结构应用实例(四)——最小生成树
  • 新能源汽车出海中的数据合规热点问题
  • UE5 半透明阴影 快速解决方案
  • tensorrt 下载地址
  • [数据结构]链表的实现在PHP中
  • C++11: atomic 头文件
  • HashMap ConcurrentHashMap
  • HTTP那些事
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • JavaScript中的对象个人分享
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • Nodejs和JavaWeb协助开发
  • oldjun 检测网站的经验
  • SOFAMosn配置模型
  • 多线程 start 和 run 方法到底有什么区别?
  • 我的zsh配置, 2019最新方案
  • 学习ES6 变量的解构赋值
  • 用简单代码看卷积组块发展
  • Semaphore
  • #NOIP 2014# day.2 T2 寻找道路
  • #vue3 实现前端下载excel文件模板功能
  • $GOPATH/go.mod exists but should not goland
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (2)空速传感器
  • (7)svelte 教程: Props(属性)
  • (arch)linux 转换文件编码格式
  • (java)关于Thread的挂起和恢复
  • (Java入门)学生管理系统
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (阿里云万网)-域名注册购买实名流程
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (算法)Travel Information Center
  • (一)VirtualBox安装增强功能
  • (正则)提取页面里的img标签
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .gitignore不生效的解决方案
  • .NET 8.0 中有哪些新的变化?
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .Net 基于MiniExcel的导入功能接口示例
  • .net后端程序发布到nignx上,通过nginx访问
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • @media screen 针对不同移动设备