在嵌入式开发中,经常需要进行时间格式转换
1.时间戳 1345302987 转换成标准格式的时间 “2012/08/18 23:16:27”
#include <stdio.h>
#include <time.h>
int main ()
{
time_t rawtime;
struct tm * timeinfo;
char buffer [128];
//time (&rawtime);
//printf("%ld\n", rawtime);
printf("请输入时间戳:");
scanf("%d", &rawtime);
timeinfo = localtime (&rawtime);
strftime (buffer,sizeof(buffer),"Now is %Y/%m/%d %H:%M:%S",timeinfo);
printf("%s\n", buffer);
return 0;
}
strftime();函数可参考:https://blog.csdn.net/weixin_42868654/article/details/88183538
2.标准格式的时间 “2011/11/11 11:11:11”或“2011-11-11 11:11:11” 转换时间戳 1320981071
#include <stdio.h>
#include <time.h>
#include <string.h>
#include <stdlib.h>
long GetTick(char *str_time)
{
struct tm stm;
int iY, iM, iD, iH, iMin, iS;
memset(&stm,0,sizeof(stm));
iY = atoi(str_time);
iM = atoi(str_time+5);
iD = atoi(str_time+8);
iH = atoi(str_time+11);
iMin = atoi(str_time+14);
iS = atoi(str_time+17);
stm.tm_year=iY-1900;
stm.tm_mon=iM-1;
stm.tm_mday=iD;
stm.tm_hour=iH;
stm.tm_min=iMin;
stm.tm_sec=iS;
return mktime(&stm);
}
int main()
{
char str_time[19];
printf("请输入时间:");
gets(str_time);
printf("%s\n", str_time); //2011/11/11 11:11:11
printf("%ld\n", GetTick(str_time)); //1320981071 = 2011/11/11 11:11:11
return 0;
}