获取C中特定日期的历元秒数

获取C中特定日期的历元秒数,c,epoch,time.h,C,Epoch,Time.h,如何获取自1970年1月1日以来特定日期的秒数,例如:“2017-09-14 23:24:46” #包括 #包括 #包括 int main() { struct-tm-tmVar; 时间变量; sscanf(“2017-09-14 23:24:46”,%d-%d-%d%d:%d”,&tmVar.tm\u年 ,&tmVar.tm_-mon,&tmVar.tm_-mday, &tmVar.tm_小时和tmVar.tm_分钟, &tmVar.tm_sec); tmVar.tm_isdst=1; pri

如何获取自1970年1月1日以来特定日期的秒数,例如:“2017-09-14 23:24:46”

#包括
#包括
#包括
int main()
{
struct-tm-tmVar;
时间变量;
sscanf(“2017-09-14 23:24:46”,%d-%d-%d%d:%d”,&tmVar.tm\u年
,&tmVar.tm_-mon,&tmVar.tm_-mday,
&tmVar.tm_小时和tmVar.tm_分钟,
&tmVar.tm_sec);
tmVar.tm_isdst=1;
printf(“tm\u年:%d\n”,tmVar.tm\u年);
printf(“tm\u月:%d\n”,tmVar.tm\u-mon);
printf(“tm_日:%d\n”,tmVar.tm_日);
printf(“tm_小时:%d\n”,tmVar.tm_小时);
printf(“tm_min:%d\n”,tmVar.tm_min);
printf(“tm_秒:%d\n”,tmVar.tm_秒);
timeVar=mktime(&tmVar);
printf(“时间%d\n”,时间变量);
}
然而,输出并非我所期望的:

商标注册年份:2017年

tm_月:9

旅游日:14

下午时数:23

tm_min:24

tm_sec:46

时间1336625342


根据,正确的值应为1510529086。为什么我没有得到这个值?

您需要调整存储在结构中的值

tm_year
字段是自1900年起的年份,因此从该值中减去1900

tm_mon
字段是自一月起的月份,因此从该值中减去1

因此,在填充结构后,请执行以下操作:

 tmVar.tm_year -= 1900;
 tmVar.tm_mon--;
输出:

tm_year :117
tm_month :8
tm_day :14
tm_hour :23
tm_min :24
tm_sec :46
time 1505445886

与输出相关的秒数不是1510529086。可移植的方法是计算“2017-09-14 23:24:46”的
时间和“1970年1月1日”的
时间,然后使用
difftime()
计算差异。@MiguelÁngelRetamozoSanchez很高兴我能帮忙。如果你觉得它有用的话,请随意使用。
tm_year :117
tm_month :8
tm_day :14
tm_hour :23
tm_min :24
tm_sec :46
time 1505445886