time_t转换格式化时间

本文介绍了一个使用C语言中的strftime函数来格式化输出当前时间的例子。通过调用time()获取当前时间戳,并利用localtime将其转换为本地时间,最后通过strftime函数将时间格式化为年-月-日,时:分:秒的形式。

 size_t
 strftime (char *s, size_t maxsize, const char *format, const struct tm *tp); //格式化输出函数

 

运行输出:

./time
Time: 2009-08-14,13:59:22

将 `time_t` 类型转换格式化时间字符串可以采用以下两种常见方法: ### 方法一:使用 `localtime` 和 `strftime` 函数 以下是一个示例代码,将 `time_t` 类型的时间格式化为 `YYYYMMDDHH24MISS` 型的字符串: ```c #include <stdio.h> #include <time.h> // 指定 time_t 类型的时间格式化为 YYYYMMDDHH24MISS 型的字符串 void FormatTime(time_t time1, char *szTime) { struct tm tm1; localtime_r(&time1, &tm1); strftime(szTime, 15, "%Y%m%d%H%M%S", &tm1); } int main() { time_t now = time(NULL); char szTime[15]; FormatTime(now, szTime); printf("Formatted time: %s\n", szTime); return 0; } ``` 此方法借助 `localtime` 函数把 `time_t` 类型的时间转换为本地时间的 `struct tm` 结构体,再利用 `strftime` 函数按照指定格式将 `struct tm` 结构体转换为字符串[^1]。 ### 方法二:使用 C++11 的 `chrono` 和 `iomanip` 库 如果是在 C++ 环境中,可使用 C++11 提供的库进行时间格式化,以下是精确到毫秒的示例代码: ```cpp #include <chrono> #include <string> #include <sstream> #include <iomanip> #include <iostream> // 格式化时间,精确到毫秒 std::string getTimeString() { auto t = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now()); std::stringstream ss; ss << std::put_time(std::localtime(&t), "%Y-%m-%d %H:%M:%S"); auto tNow = std::chrono::system_clock::now(); auto tMilliseconds = std::chrono::duration_cast<std::chrono::milliseconds>(tNow.time_since_epoch()); auto tSeconds = std::chrono::duration_cast<std::chrono::seconds>(tNow.time_since_epoch()); auto ms = tMilliseconds - tSeconds; ss << "." << std::setfill('0') << std::setw(3) << ms.count(); return ss.str(); } int main() { std::string time = getTimeString(); std::cout << time << std::endl; return 0; } ``` 该方法先使用 `std::chrono::system_clock::to_time_t` 把 `chrono` 时间转换为 `time_t` 类型,再用 `std::put_time` 函数将其格式化为字符串,最后手动处理毫秒部分[^2]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值