c++ mktime和时间秒数的理解
作者:互联网
// ConsoleApplication7.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <chrono>
#include <iostream>
using namespace std;
//判断平年和闰年的方法
int days(int year){
if (!(year % 400) || (!(year % 4))&&(year%100)){
printf("year is %d\n", year);
return 366;
} else{
return 365;
}
}
//
int daysSpan(int startY, int endY){
int sum = 0;
for (int i = 0; i < endY - startY; i++){
sum += days(i+startY);
}
return sum;
}
int _tmain(int argc, _TCHAR* argv[])
{
uint64_t secs = uint64_t(daysSpan(1, 1970)) * 24 * 3600;
printf("%ld\r\n", secs);
//
struct tm t;
t.tm_hour = 0;
t.tm_min = 0;
t.tm_sec = 3;
t.tm_year = 2017 - 1900;
t.tm_mon = 0;//1月
t.tm_mday = 1;//1
time_t t_utc = mktime(&t);
t_utc += 8 * 3600;
//gmtime_s(&t, &t_utc);
//t_utc = mktime(&t);
printf("%d\n",t_utc);
double days = double(secs + t_utc) / 24. / 3600.;
printf("days is %f\n", days);
chrono::seconds S1(int64_t(44195.2973263889 * 3600 * 24));
const chrono::seconds S2(2208988800);
chrono::seconds s=S1-S2;
//s -= chrono::hours(8);
time_t tt;
tt = chrono::system_clock::to_time_t(chrono::time_point<chrono::system_clock>(s));
//
struct tm t1;
//localtime_s(&t1, &tt);
//ctime_s()
char buftime[100] = { 0 };
cout << gmtime_s(&t1, &tt) << endl;;
cout << asctime_s(buftime, 100, &t1);
return 0;
}
标签:utc,秒数,chrono,int,days,c++,mktime,tm,year 来源: https://www.cnblogs.com/iwetuan/p/14916751.html