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;
}


上一篇:统计一段代码的运行时间


下一篇:为图像添加时间戳(获取系统时间,精确到毫秒)