time秒和年月日时分秒的转化

一、时间类型

1、time_t 用来存储从1970年到现在经过了多少秒,实际上就是long int类型;
2、struct timeval 精确到微秒;
struct timeval
{
long tv_sec; // 秒
long tv_usec; // 微秒
};
3、年月日结构
struct tm
{
int tm_sec; /秒,正常范围0-59, 但允许至61/
int tm_min; /分钟,0-59/
int tm_hour; /小时, 0-23/
int tm_mday; /日,即一个月中的第几天,1-31/
int tm_mon; /月, 从一月算起,0-11/ 1+p->tm_mon;
int tm_year; /年, 从1900至今已经多少年/ 1900+ p->tm_year;
int tm_wday; /星期,一周中的第几天, 从星期日算起,0-6/
int tm_yday; /从今年1月1日到目前的天数,范围0-365/
int tm_isdst; /日光节约时间的旗标/
};

二、时间函数

1、#include <time.h>
char asctime(const struct tm timeptr);
将结构中的信息转换为真实世界的时间,以字符串的形式显示

2、char *ctime(const time_t *timep);
将timep转换为真是世界的时间,以字符串显示,它和asctime不同就在于传入的参数形式不一样

3、struct time *localtime(const time_t *clock);
返回指向tm结构体的指针。

三、代码

int main(void)
{

struct tm *t = NULL;
time_t timep;
char time_[100];

time(&timep);

// 1、 ctime转换
cout << ctime(&timep) << endl;
t = localtime(&timep);

// 2、asctime
cout << asctime(t) << endl;

// 3、年份加1900,月份加1
sprintf(time_, "%4d-%2d-%2d %2d:%2d:%2d", t->tm_year+1900, t->tm_mon+1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec);
cout << time_ << endl;	

}

运行结果:

    Wed May 20 10:17:59 2020

    Wed May 20 10:17:59 2020

    2020- 5-20 10:17:59

四:总结
asctime()和ctime()输出的年月日时分秒是固定格式,
可通过localtime()返回tm指针,按照自己的需求组装格式。

猜你喜欢

转载自blog.csdn.net/zhiyijue7762/article/details/106197142
今日推荐