C++获取当前时间并格式化为字符串的方法

纸上星河
纸上星河
发布时间:2026-10-14| 3人浏览过
原创

在C++开发中,获取系统当前时间并进行特定格式化处理是常见需求,尤其在日志记录、文件名生成等场景中。本文将展示如何在MFC环境下利用CTime类快速获取本地时间,并将其转换为标准的时间字符串格式。

实现目标

我们需要一个函数,返回当前时间的具体信息,格式要求为:年(4位)月(2位)日(2位)时(2位)分(2位)秒(2位),即 YYYYMMDDHHmmss 的形式。例如:20231027143059。

准备条件

  • 项目需引入MFC库支持(afx.h),因为本例使用了MFC提供的 CTime 类。
  • 包含头文件:#include <afx.h>。

操作步骤

第1步:定义获取时间的函数

目的:封装时间获取与格式化逻辑,通过引用传递结果字符串。

入口:无参数输入,内部调用系统时间接口。

动作:

  1. 创建 CTime 对象获取当前时刻。
  2. 提取年、月、日、时、分、秒各个分量。
  3. 使用 sprintf 进行格式化拼接。
  4. 将结果存入输出参数并返回状态。

以下是完整代码实现:

//取本地时间 
BOOL GetTime(string &mytime)
{
    BOOL b_ret = TRUE;
    CHAR szBuf[256] = {0};
    
    // 获取当前本地时间
    CTime tNow = CTime::GetCurrentTime();
    
    // 格式化时间为 YYYYMMDDHHmmss
    sprintf(szBuf, "%04u%02u%02u%02u%02u%02u",
            tNow.GetYear(),   // 年
            tNow.GetMonth(),  // 月
            tNow.GetDay(),    // 日
            tNow.GetHour(),   // 时
            tNow.GetMinute(), // 分
            tNow.GetSecond()); // 秒
            
    mytime = szBuf;
    return b_ret;
}

第2步:调用与验证

重要参数:

  • szBuf:缓冲区大小设为256字节,足以容纳格式化后的时间字符串及结束符,避免溢出风险。
  • %02u:确保月份、日期、小时等单数数字前补零(如09而非9)。

完成状态判断:

  • 函数返回 TRUE 表示操作成功。
  • 传入的 string& mytime 变量应包含长度为14位的纯数字时间串。

注意事项与排错

备份风险提醒:此代码仅涉及内存读写,无文件系统操作,数据丢失风险极低。

  • 环境依赖:如果使用非MFC的标准C++环境(如纯Win32 SDK或跨平台项目),CTime 不可用。此时应改用 <ctime> 中的 std::time 和 std::localtime,或使用C++11后的 <chrono> 库。
  • 线程安全:sprintf 是非线程安全的格式化函数。如果在高并发多线程环境中频繁调用,建议替换为 sprintf_s(Windows)或 snprintf(跨平台)以防止缓冲区竞争。

总结

以上即为C++中使用MFC CTime类获取当前时间并格式化为字符串的详细内容,更多关于C++时间处理技巧的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。