#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;
}
計算當前時間到1970的秒數
最新推荐文章于 2021-05-20 09:17:40 发布