C++日期到天数的转换

本文介绍如何使用C++编程将日期转换为从某个基日期开始的总天数,涉及日期处理和算术运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

日期到天数的转换

#include<iostream>
using namespace std;
//看输入的日子是这一年的第几天
static int days[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
class Date
{
public:
 // 获取某年某月的天数
 int GetMonthDay(int year, int month)
 {
  days[2] = 28;  //如果之前有一次输入闰年把2月改成29,下次输入判断前先把2月变回28再说
  int day = days[month];
  //闰年2月29天
  if (month == 2
   && ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)))
  {
   day += 1;
   days[month] = 29;
  }
  return day;
 }
 // 全缺省的构造函数
 Date(int year = 1900, int month = 1, int day = 1) {
  if (year > 0 && month > 0 && month < 13 && day > 0 &&
   day <= GetMonthDay(year, month)) {
   _year = year;
   _month = month;
   _day = day;
  }
  else {
   cout << "日期不合法" << year << "-" << month << "-" << day << endl;
  }
 }
 int func() {
  int sum = 0;
  if (_month > 1) {
   for (int i = 0; i < _month; i++) {
    sum += days[i];
   }
   sum = sum + _day;
  }
  else {
   sum = _day;
  }
  return sum;
 }
private:
 int _year;
 int _month;
 int _day;
};

int main() {
 int a, b, c;
 while (cin >> a >> b >> c) {
  Date d(a, b, c);
  //打印出这一年2月的天数
  cout << d.GetMonthDay(a, 2) << endl;
  //打印这一日期是这一年第多少天
  cout << d.func() << endl;
 }
 return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值