C标准时间与时间戳的相互转换
Posted 行稳方能走远
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C标准时间与时间戳的相互转换相关的知识,希望对你有一定的参考价值。
什么是时间戳?
- 时间戳是指格林威治时间自1970年1月1日(00:00:00 GTM)至当前时间的总秒数。它也被称为Unix时间戳(Unix Timestamp)。
- 时间戳是能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间
Demo
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
/*标准时间转换为时间戳*/
int standard_to_stamp(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;
//printf("%d-%0d-%0d %0d:%0d:%0d\\n", iY, iM, iD, iH, iMin, iS);
return (int)mktime(&stm);
/*时间戳转换为标准时间*/
typedef struct times
int Year;
int Mon;
int Day;
int Hour;
int Min;
int Second;
Times;
Times stamp_to_standard(int stampTime)
time_t tick = (time_t)stampTime;
struct tm tm;
char s[100];
Times standard;
tm = *localtime(&tick);
strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S", &tm);
printf("时间戳为:%d 转换成标准时间为: %s\\n", (int)tick, s);
standard.Year = atoi(s);
standard.Mon = atoi(s+5);
standard.Day = atoi(s+8);
standard.Hour = atoi(s+11);
standard.Min = atoi(s+14);
standard.Second = atoi(s+17);
return standard;
int main(int argc, char **argv)
int a =0;
printf("输入的标准时间时: %s \\n",argv[1]);
a=standard_to_stamp(argv[1]);
printf("标准时间转换为时间戳: %d\\n",a);
stamp_to_standard(a);
return 0;
运行结果:
以上是关于C标准时间与时间戳的相互转换的主要内容,如果未能解决你的问题,请参考以下文章