通过查看源码分析
namespace std
{
using ::clock_t; // clock_t x; X = clock(); //获取程序跑了多久
using ::time_t; // time_t y; y = time(NULL); //从纪元开始计算 相当于程序从1970年开始跑
// 获取当前时间 time_t current_time;
//current_time = time(NULL);
//或者 time(¤t_time); 当然也会返回 函数返回值也会可以是当前时间
using ::tm; //结构体 包含秒、分、时、天1(月)、月、天2(星期)、年份差(基准为1900)、天(年)、夏令 其实可以简单理解为本地时间
using ::clock;
using ::difftime; //返回两个时间戳的差 time_t x, y; difftime(x, y);
using ::mktime; //将tm结构时间转换为时间戳
using ::time;
using ::asctime; //将tm结构时间转换为string
using ::ctime; //将时间戳转换为字符串
using ::gmtime;
using ::localtime;
using ::strftime; //将tm 结构体按照指定format格式输出为string
} // namespace
#include <stdio.h>
#include <time.h>
#include <string>
int main() {
time_t current_time;
struct tm *utc_timeinfo;
time(¤t_time); // 获取当前时间戳 时间戳格式:月 日 当前时间 年份
std::string nowTime = ctime(¤t_time);
printf("nowTime :%s\n", nowTime.c_str());
utc_timeinfo = gmtime(¤t_time); // 转换为 UTC 时间结构
printf("UTC time: %s", asctime(utc_timeinfo));
//本地模式
utc_timeinfo = localtime(¤t_time);
std::string tmNowTime = asctime(utc_timeinfo);
printf("localTime Mode :%s", tmNowTime.c_str());
//指定格式
char time_str[80];
strftime(time_str, sizeof(time_str), "%Y-%m-%d %H:%M:%S", utc_timeinfo);
printf("strftime :%s", time_str);
return 0;
}
//一些占位符的补充
%X %x 十六进制 分别以大写、小写表示
%llx long long 大小的占位符 过短会被截断
%p 专输出地址 占位符
//
参考:
占位符参考