計算當前時間到1970的秒數

#pragma once

const long nSecondsInJan = 2678400L; // 1月的总秒数
const long nSecondsInApril = 2592000L; // 4月的总秒数
const long nSecondsInLeapFeb = 2505600L; // 2月(闰)的总秒数
const long nSecondsInNonLeapFeb = 2419200L; // 2月(平)的总秒数
const long nSecondsInNonLeapYear = 31536000L; // 平年的总秒数
const long nSecondsInLeapYear = 31622400L; // 闰年的总秒数

const long nSecondsInMonths_NonLeap[] =
{
	nSecondsInJan, nSecondsInNonLeapFeb, nSecondsInJan, nSecondsInApril,
	nSecondsInJan, nSecondsInApril, nSecondsInJan, nSecondsInJan,
	nSecondsInApril, nSecondsInJan, nSecondsInApril, nSecondsInJan
};

const long nSecondsInMonths_Leap[] =
{
	nSecondsInJan, nSecondsInLeapFeb, nSecondsInJan, nSecondsInApril,
	nSecondsInJan, nSecondsInApril, nSecondsInJan, nSecondsInJan,
	nSecondsInApril, nSecondsInJan, nSecondsInApril, nSecondsInJan
};

typedef struct _tagTimeFmt
{
	int m_iyear;
	int m_iMon;
	int m_iDay;
	int m_iHour;
	int m_iMin;
	int m_iSec;
}TimeFormat;

class CCalc1970ToNow
{
public:
	CCalc1970ToNow(void);
	~CCalc1970ToNow(void);

	bool IsLeap(int iYear);
	int CalcTime(TimeFormat Time);
};

#include "StdAfx.h"
#include "Calc1970ToNow.h"

CCalc1970ToNow::CCalc1970ToNow(void)
{
}

CCalc1970ToNow::~CCalc1970ToNow(void)
{
}

bool CCalc1970ToNow::IsLeap( int iYear )
{
	if ((iYear%4 == 0 && iYear%100 != 0) || iYear%400 == 0)
	{
		return true;
	}
	return false;
}

int CCalc1970ToNow::CalcTime( TimeFormat Time )
{
	long long nToltalTime = 0;
	for (int iYear = 1970; iYear < Time.m_iyear; iYear++)
	{
		if (IsLeap(iYear))
		{
			nToltalTime += nSecondsInLeapYear;
		}
		else
		{
			nToltalTime += nSecondsInNonLeapYear;
		}	
	}

	for (int iMon = 1; iMon < Time.m_iMon; iMon++)
	{
		if (IsLeap(iMon))
		{
			nToltalTime += nSecondsInMonths_Leap[iMon];
		}
		else
		{
			nToltalTime += nSecondsInMonths_NonLeap[iMon];
		}	
	}
	nToltalTime += (Time.m_iDay - 1) * 86400;
	nToltalTime += Time.m_iHour * 3600;
	nToltalTime += Time.m_iMin * 60;
	nToltalTime += Time.m_iSec;
	return nToltalTime;
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值