完整代码:(我编的是秒变换成年月日,从1970.1.1 00:00:00算起,打算用系统时间试验一下结果发现这个问题)
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
int year=1970,month,day,hour,min,sec;
sec=time(0)+8*3600; //1970-1-1 00:00:00算起 ???(08:00:00)
day=sec/86400; //计算天 86400进制
while(day>364) //计算年
{
if((year%4==0&&year%100!=0)||year%400==0)
day-=366;
else
day-=365;
++year;
}
day=day+1; //已经过完的天数+1 = 今天的日期
if((year%4==0&&year%100!=0)||year%400==0) //计算月 、日
{
if(day<=31)month=1;
else if(day<=60){
month=2;
day-=31;
}
else if(day<=91){
month=3;
day-=60;
}
else if(day<=121){
month=4;
day-=91;
}
else if(day<=152)
{
month=5;
day-=121;
}
else if(day<=182){
month=6;
day-=152;
}
else if(day<=213){
month=7;
day-=182;
}
else if(day<=244){
month=8;
day-=213;
}
else if(day<=274){
month=9;
day-=244;
}
else if(day<=305){
month=10;
day-=274;
}
else if(day<=335){
month=11;
day-=305;
}
else if(day<=366){
month=12;
day-=335;
}
}
else
{
if(day<=31)month=1;
else if(day<=59){
month=2;
day-=31;
}
else if(day<=90){
month=3;
day-=59;
}
else if(day<=120){
month=4;
day-=90;
}
else if(day<=151){
month=5;
day-=120;
}
else if(day<=181){
month=6;
day-=151;
}
else if(day<=212){
month=7;
day-=181;
}
else if(day<=243){
month=8;
day-=212;
}
else if(day<=273){
month=9;
day-=243;
}
else if(day<=304){
month=10;
day-=273;
}
else if(day<=334){
month=11;
day-=304;
}
else if(day<=365){
month=12;
day-=334;
}
}
hour=(sec%86400)/3600; //计算时 3600进制
min=(sec%3600)/60; //计算分 60进制
sec=(sec%3600)%60; //计算秒 余下的全为秒数
cout<<"date:"<<year<<"/"<<month<<"/"<<day<<"\ntime:"<<hour<<":"<<min<<":"<<sec<<endl;
system("pause");
return 0;
}
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
int year=1970,month,day,hour,min,sec;
sec=time(0)+8*3600; //1970-1-1 00:00:00算起 ???(08:00:00)
day=sec/86400; //计算天 86400进制
while(day>364) //计算年
{
if((year%4==0&&year%100!=0)||year%400==0)
day-=366;
else
day-=365;
++year;
}
day=day+1; //已经过完的天数+1 = 今天的日期
if((year%4==0&&year%100!=0)||year%400==0) //计算月 、日
{
if(day<=31)month=1;
else if(day<=60){
month=2;
day-=31;
}
else if(day<=91){
month=3;
day-=60;
}
else if(day<=121){
month=4;
day-=91;
}
else if(day<=152)
{
month=5;
day-=121;
}
else if(day<=182){
month=6;
day-=152;
}
else if(day<=213){
month=7;
day-=182;
}
else if(day<=244){
month=8;
day-=213;
}
else if(day<=274){
month=9;
day-=244;
}
else if(day<=305){
month=10;
day-=274;
}
else if(day<=335){
month=11;
day-=305;
}
else if(day<=366){
month=12;
day-=335;
}
}
else
{
if(day<=31)month=1;
else if(day<=59){
month=2;
day-=31;
}
else if(day<=90){
month=3;
day-=59;
}
else if(day<=120){
month=4;
day-=90;
}
else if(day<=151){
month=5;
day-=120;
}
else if(day<=181){
month=6;
day-=151;
}
else if(day<=212){
month=7;
day-=181;
}
else if(day<=243){
month=8;
day-=212;
}
else if(day<=273){
month=9;
day-=243;
}
else if(day<=304){
month=10;
day-=273;
}
else if(day<=334){
month=11;
day-=304;
}
else if(day<=365){
month=12;
day-=334;
}
}
hour=(sec%86400)/3600; //计算时 3600进制
min=(sec%3600)/60; //计算分 60进制
sec=(sec%3600)%60; //计算秒 余下的全为秒数
cout<<"date:"<<year<<"/"<<month<<"/"<<day<<"\ntime:"<<hour<<":"<<min<<":"<<sec<<endl;
system("pause");
return 0;
}