日期计算
来源:互联网 发布:华盛顿大学网络课程 编辑:程序博客网 时间:2024/06/07 01:57
计算日期差
#include <iostream>using namespace std;struct date{ int year; int month; int day;};bool isLeap(int aYear); // 判断平年闰年int daysGone(date aDate); // 计算一年的第几天int main(){ int days(0); int days1(0); date a,b; cout << "请输入第一个日期(年月日):"; cin >> a.year >> a.month >> a.day; cout << "请输入第二个日期(年月日):"; cin >> b.year >> b.month >> b.day; for (int i = a.year; i < b.year; i++) { if (isLeap(i)) days1 += 366; else days1 += 365; } days = days1 + daysGone(b)-daysGone(a); cout << "两个日期间隔" << days << "天" << endl << endl; return 0;}bool isLeap(int aYear){ if (((aYear % 4 == 0) && (aYear % 100 != 0)) || (aYear % 400 == 0)) return true; else return false;}int daysGone(date aDate){ int mDays(0); if (aDate.month > 1) for (int i = 1; i < aDate.month; i++) if (i == 4 || i == 6 || i == 9 || i == 11) mDays += 30; else if (i == 2) if (isLeap(aDate.year)) mDays += 29; else mDays += 28; else mDays += 31; return mDays + aDate.day;}
计算结果
请输入第一个日期(年月日):1985-8-9请输入第二个日期(年月日):2017-8-9两个日期间隔11688天
计算日期+天数=新日期
#include <cstdio>#include <iostream>#include <algorithm>using namespace std;struct Date{ int year; int month; int day;};int normalMonthDays[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};bool leapYear(int year){//leap year judgement if(year %4 ==0 && year%100 !=0 || year %400 ==0) return true; return false;}Date getNewDate(Date initDate, int diffDays){ Date reDate = initDate; //1.get years (days >=366 or 365) int daysAyear = 365; if(leapYear(reDate.year)) {//if leap year daysAyear = 366; } while(diffDays/daysAyear) { diffDays = diffDays - daysAyear; reDate.year ++; if(leapYear(reDate.year)) { daysAyear = 366; } } //2.get months (days < 366 or 365) if(leapYear(reDate.year)) { normalMonthDays[2]=29; } while(diffDays/normalMonthDays[reDate.month]) { diffDays = diffDays - normalMonthDays[reDate.month]; reDate.month++; if(reDate.month >= 13) { reDate.year++; if(leapYear(reDate.year)) { normalMonthDays[2]=29; } reDate.month = reDate.month%12; } } //3.get days if(leapYear(reDate.year)) { normalMonthDays[2]=29; } if(diffDays + reDate.day <= normalMonthDays[reDate.month]) reDate.day = diffDays + reDate.day; else { reDate.day = diffDays + reDate.day - normalMonthDays[reDate.month]; reDate.month++; if(reDate.month > 12) { reDate.year++; reDate.month = reDate.month%12; } } return reDate;}int main(void){ Date initDate; int diffDays=0; scanf("%d-%d-%d",&initDate.year, &initDate.month, &initDate.day); scanf("%d", &diffDays); Date reDate = getNewDate(initDate, diffDays); printf("%d-%d-%d\n",reDate.year, reDate.month, reDate.day); return 0;}
计算星期
int Zeller(int year,int month,int day)///蔡勒公式算星期{ if (month==1||month==2) { year--; month+=12; } int c=year/100; int y=year-c*100; int week=(c/4)-2*c+(y+y/4)+(13*(month+1)/5)+day-1; while(week<0){week+=7;} week%=7; return week;}
阅读全文
0 0
- 日期计算
- 计算日期
- 日期计算
- 日期计算
- 日期计算
- 日期计算
- 日期计算
- 计算日期
- 日期计算
- 日期计算
- 日期计算
- 计算日期
- 日期计算
- 日期计算
- 日期计算
- 日期计算
- 日期计算
- 日期计算
- cocos2dx跨平台直播实例-ffmpeg-ios篇
- iOS与Android的音频互通
- Docker使用Link在容器之间建立连接
- 移动web开发基础知识
- 安全框架Shiro和Spring Security比较
- 日期计算
- 挖掘算法中的数据结构(一):O(n^2)排序算法之 选择、插入、冒泡、希尔排序 及 优化
- 通用VU函数
- Python3之生成器
- 【模板】线段树
- android7.0 SystemUI编译过程中遇到的问题
- noip模拟赛 小球游戏 cqbzoj3391(网格路径模型)
- 小巧函数
- HTML中常用操作关于:页面跳转,空格