timeofsecondmain.cpp
来自「把一个年、月、日、时、分、秒的时间转换为一个基于1970年1月1日0时0分0秒的」· C++ 代码 · 共 131 行
CPP
131 行
#include "iostream.h"
#define OFFSET_SECOND 946684800 /* 从1970/1/1/0/0/0到2000/1/1/0/0/0之间的总秒数 */
//#define OFFSET_SECOND 0 /* 从2000/1/1/0/0/0到2000/1/1/0/0/0之间的总秒数 */
#define SECOND_OF_DAY 86400 /* 1天的秒数 */
typedef unsigned int uint16;
typedef unsigned char uint8;
typedef struct date_time
{
uint16 iYear;
uint16 iMon;
uint16 iDay;
uint16 iHour;
uint16 iMin;
uint16 iSec;
uint16 iMsec;
} DATE_TIME;
uint8 DayOfMon[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
/* 返回由1970/1/1/0/0/0起的秒时 */
unsigned long GetSecondTime(DATE_TIME *date_time)
{
uint16 iYear, iMon, iDay, iHour, iMin, iSec;
iYear = date_time->iYear;
iMon = date_time->iMon;
iDay = date_time->iDay;
iHour = date_time->iHour;
iMin = date_time->iMin;
iSec = date_time->iSec;
uint16 i, Cyear=0;
unsigned long CountDay=0;
for(i=1970; i<iYear; i++) /* 统计1970年到本年之前的闰年数 */
{
if(((i%4==0) && (i%100!=0)) || (i%400==0)) Cyear++;
}
CountDay = Cyear * 366 + (iYear-1970-Cyear) * 365;
for(i=1; i<iMon; i++)
{
if((i==2) && (((iYear%4==0)&&(iYear%100!=0)) || (iYear%400==0)))
CountDay += 29;
else
CountDay += DayOfMon[i-1];
}
CountDay += (iDay-1);
CountDay = CountDay*SECOND_OF_DAY + (unsigned long)iHour*3600 + (unsigned long)iMin*60 + iSec;
return CountDay;
}
/* 由秒时计算基于1970/1/1/0/0的日期 */
void GetDateTimeFromSecond(unsigned long lSec, DATE_TIME *tTime)
{
uint16 i,j,iDay;
unsigned long lDay;
lDay = lSec / SECOND_OF_DAY; /* 转为基于天的时间 */
lSec = lSec % SECOND_OF_DAY;
i = 1970;
while(lDay > 365)
{
if(((i%4==0)&&(i%100!=0)) || (i%400==0)) /* 闰年 */
lDay -= 366;
else
lDay -= 365;
i++;
}
if((lDay == 365) && !(((i%4==0)&&(i%100!=0)) || (i%400==0))) /* 平年 */
{
lDay -= 365;
i++;
}
tTime->iYear = i; /* 得到年份 */
for(j=0;j<12;j++) /* 计算月份 */
{
if((j==1) && (((i%4==0)&&(i%100!=0)) || (i%400==0)))
iDay = 29;
else
iDay = DayOfMon[j];
if(lDay >= iDay) lDay -= iDay;
else break;
}
tTime->iMon = j+1;
tTime->iDay = lDay+1;
tTime->iHour = lSec / 3600;
tTime->iMin = (lSec % 3600) / 60;
tTime->iSec = (lSec % 3600) % 60;
}
DATE_TIME ARM_Time;
void main()
{
unsigned long my_second;
DATE_TIME *my_date_time;
my_date_time = &ARM_Time;
while(1)
{
cout << "Please input the number of YEAR:" << endl;
cin >> my_date_time->iYear;
cout << "Please input the number of MONTH:" << endl;
cin >> my_date_time->iMon;
cout << "Please input the number of DAY:" << endl;
cin >> my_date_time->iDay;
cout << "Please input the number of HOUR:" << endl;
cin >> my_date_time->iHour;
cout << "Please input the number of MINUTE:" << endl;
cin >> my_date_time->iMin;
cout << "Please input the number of SECOND:" << endl;
cin >> my_date_time->iSec;
cout<<endl;
my_second = GetSecondTime(my_date_time);
cout << "Your date time is equal to " << my_second << " SECONDS based on 1970/1/1/00:00:00" << endl;
GetDateTimeFromSecond(my_second, my_date_time);
cout << my_second <<" SECONDS is equal to "
<< (unsigned int)my_date_time->iYear<<"/"<< (unsigned int)my_date_time->iMon<<"/"
<< (unsigned int)my_date_time->iDay <<"/"<< (unsigned int)my_date_time->iHour<<":"
<< (unsigned int)my_date_time->iMin <<":"<< (unsigned int)my_date_time->iSec<<endl<<endl;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?