获取 C 中特定日期的纪元秒数
Get epoch seconds for specific date in C
如何获取特定日期自 1970 年 1 月 1 日以来经过的秒数,例如:“2017-09-14 23:24:46”
#include <stdio.h>
#include <stdint.h>
#include <time.h>
int main()
{
struct tm tmVar;
time_t timeVar;
sscanf("2017-09-14 23:24:46","%d-%d-%d %d:%d:%d",&tmVar.tm_year
,&tmVar.tm_mon, &tmVar.tm_mday,
&tmVar.tm_hour, &tmVar.tm_min,
&tmVar.tm_sec);
tmVar.tm_isdst = 1;
printf("tm_year :%d\n",tmVar.tm_year);
printf("tm_month :%d\n",tmVar.tm_mon);
printf("tm_day :%d\n",tmVar.tm_mday);
printf("tm_hour :%d\n",tmVar.tm_hour);
printf("tm_min :%d\n",tmVar.tm_min);
printf("tm_sec :%d\n",tmVar.tm_sec);
timeVar = mktime(&tmVar);
printf("time %d\n",timeVar);
}
但是输出不是我所期望的:
tm_year :2017
tm_month:9
tm_day:14
tm_hour:23
tm_min:24
tm_sec:46
时间1336625342
根据epochconverter.com,正确的值应该是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
如何获取特定日期自 1970 年 1 月 1 日以来经过的秒数,例如:“2017-09-14 23:24:46”
#include <stdio.h>
#include <stdint.h>
#include <time.h>
int main()
{
struct tm tmVar;
time_t timeVar;
sscanf("2017-09-14 23:24:46","%d-%d-%d %d:%d:%d",&tmVar.tm_year
,&tmVar.tm_mon, &tmVar.tm_mday,
&tmVar.tm_hour, &tmVar.tm_min,
&tmVar.tm_sec);
tmVar.tm_isdst = 1;
printf("tm_year :%d\n",tmVar.tm_year);
printf("tm_month :%d\n",tmVar.tm_mon);
printf("tm_day :%d\n",tmVar.tm_mday);
printf("tm_hour :%d\n",tmVar.tm_hour);
printf("tm_min :%d\n",tmVar.tm_min);
printf("tm_sec :%d\n",tmVar.tm_sec);
timeVar = mktime(&tmVar);
printf("time %d\n",timeVar);
}
但是输出不是我所期望的:
tm_year :2017
tm_month:9
tm_day:14
tm_hour:23
tm_min:24
tm_sec:46
时间1336625342
根据epochconverter.com,正确的值应该是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