java任意时间计算下一秒_得到下一秒的日期和时间并计算是第几天

推荐方法一,方法二本人所写,给方法一比较简直就是刚学C 而且C也没学好,不会C++,面向对象的思想真不是一撮而就的事啊!我需要更加努力!加油。。。。。。。

方法一:

#include

#include

class date

{

private:

int m_nYear, m_nMonth, m_nDay, m_nHour, m_nMin, m_nSec;

int GetDay(int month);

bool IsLeapYear();

public:

date(int,int,int,int,int,int);

const date GetNextDate();

void printDate();

int FindDayIndex();

};

date::date(int year, int month, int day, int hour, int min, int sec)

{

this->m_nYear = year;

this->m_nMonth = month;

this->m_nDay = day;

this->m_nHour = hour;

this->m_nMin = min;

this->m_nSec = sec;

}

bool date::IsLeapYear()

{

if((m_nYear % 400 == 0) || (m_nYear % 4 == 0 && m_nYear % 100 != 0))

return true;

else

return false;

}

int date::GetDay(int month)

{

int day;

switch(month)

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

day = 31;

break;

case 2:

if(IsLeapYear())

day = 29;

else

day = 28;

break;

default:

day = 30;

}

return day;

}

const date date:: GetNextDate()

{

date dat = *this;

if(dat.m_nSec != 59)

dat.m_nSec ++;

else

{

dat.m_nSec = 0;

dat.m_nMin += 1;

}

if(dat.m_nMin == 60)

{

dat.m_nHour += 1;

dat.m_nMin = 0;

}

if(dat.m_nHour == 24)

{

dat.m_nDay += 1;

dat.m_nHour = 0;

}

if(dat.m_nDay == dat.GetDay(this->m_nMonth) + 1)

{

dat.m_nDay = 1;

dat.m_nMonth += 1;

}

if(dat.m_nMonth == 13)

{

dat.m_nMonth = 1;

dat.m_nYear += 1;

}

return dat;

}

int date::FindDayIndex()

{

int totalDay = 0;

for(int i = 1; i < m_nMonth; i++)

totalDay += GetDay(i);

totalDay += m_nDay;

return totalDay;

}

void date::printDate()

{

cout<

<

<

}

int main()

{

cout<

int year, month, day, hour, min, sec;

scanf("%d-%d-%d %d:%d:%d",&year, &month, &day, &hour, &min, &sec);

date dat(year, month, day, hour, min, sec);

date nextDat = dat.GetNextDate();

nextDat.printDate();

}

方法二:

#include

using namespace std;

bool isleapYear(int year)

{

if((year%4==0&&year%100!=0)||(year%400==0))

return true;

else return false;

}

int getDay(int month,int year)

{

int day;

switch(month)

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:  day=31;break;

case 2:

if(isleapYear(year))

day=29;

else day=28;

break;

default: day=30;

}

return day;

}

void count(int year,int month,int day)

{

int Cday=0;

while(month--!=0)

Cday+=getDay(month,year);

Cday+=day;

cout<

}

void getNext(int second,int minute,int hour,int day,int month,int year)

{

if(second!=59)

second++;

else

{

second=0;

minute++;

}

if(minute==60)

{

minute=0;

hour++;

}

if(hour==25)

{

hour=1;

day++;

}

if(day==getDay(month,year)+1)

{

day=1;

month++;

}

if(month==13)

{

month=1;

year++;

}

cout<

count(year,month,day);

}

int main()

{

int year=2000;

int month=2;

int day=28;

int hour=24;

int minute=59;

int second=59;

getNext(second,minute,hour,day,month,year);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值