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

本文通过两种方法实现了C++中的日期类,包括日期的递增运算,并计算了一年中当前日期的位置。第一种方法使用了面向对象的设计,定义了一个date类;第二种方法则直接使用函数来实现相同的功能。

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

方法一:

#include<iostream.h>

#include<stdio.h>

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<<m_nYear<<"-"<<m_nMonth<<"-"<<m_nDay<<" "<<m_nHour<<":"<<m_nMin

  <<":"<<m_nSec<<endl

  <<"这是"<<m_nYear<<"年的第"<<FindDayIndex()<<""<<endl;

}

int main()

{

cout<<"请输入一个日期,格式如:2002-5-8 11:23:59"<<endl;

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<iostream>
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<<"今天是今年的第"<<Cday<<"天"<<endl;
}
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<<year<<"-"<<month<<"-"<<day<<"     "<<hour<<":"<<minute<<":"<<second<<endl;
 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);
}

转载于:https://www.cnblogs.com/this-543273659/archive/2011/07/31/2122913.html

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,提出自适应参数调整、模型优化计算等改进策略。; 适合人群:具备一定Python编程基础优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值