c++ mktime和时间秒数的理解

Posted iwetuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
}


以上是关于c++ mktime和时间秒数的理解的主要内容,如果未能解决你的问题,请参考以下文章

通过 PHP mktime() 创建日期

让 mktime() 在 C++ 中忽略 DST 和本地时区

以下代码片段 C++ 的说明

mktime夏令时处理

PHP时间相加

c语言怎么将一个年月日转换成秒数