计算月末最后一天

/*
* 输入年月格式YM(如:201911),输入该月最后一天
*/
int monthEndDay(int YM)
{
int endDay;
int Y = YM / ;
int M = YM % ; if ( == M)
{
if ( == Y % || ( == Y % && != Y % ))
{
endDay = ;
}
else
{
endDay = ;
}
}
else if ( == M || == M || == M || == M || == M || == M || == M)
{
endDay = ;
}
else
{
endDay = ;
} return endDay;
} void test() {
int ymd = ; int y = ymd / ;
int m = ymd / % ;
int d = ymd % ; cout << "ymd : " << ymd << endl;
cout << "y : " << y << endl;
cout << "m : " << m << endl;
cout << "d : " << d << endl; int endDay = monthEndDay(y* + m);
cout << "endDay: " << endDay << endl;
}

增减天数

/*
* 输入年月日格式YMD(如:20191114),输入增减天数nD,返回年月日格式
*/
int AddDays(int YMD, int nD)
{
int endDay = ; int Y = YMD / ;
int D = YMD % ;
int M = YMD / % ; D += nD;
endDay = monthEndDay(Y* + M);
if ( nD > )
{
while ( D > endDay )
{
D -= endDay;
M += ;
if ( M > )
{
Y += M / ;
M = M % ;
}
endDay = monthEndDay(Y* + M);
}
}
else
{
while (D <= )
{
M -= ;
if ( == M)
{
Y -= ;
M = ;
}
endDay = monthEndDay(Y * + M);
D += endDay;
}
} return (Y* + M) * + D;
} void test_addDay() {
int YMD = ;
int addedYMD1 = AddDays(YMD, -);
int addedYMD2 = AddDays(YMD, -);
int addedYMD3 = AddDays(YMD, );
int addedYMD4 = AddDays(YMD, );
cout << "addedYMD1: " << addedYMD1 << endl; //
cout << "addedYMD2: " << addedYMD2 << endl; //
cout << "addedYMD3: " << addedYMD3 << endl; //
cout << "addedYMD4: " << addedYMD4 << endl; //
}

增减月份

/*
* 输入年月格式YM(如:201911),和增加和减少月数nM, 返回年月格式
*/
int addMonths(int YM, int nM)
{
if ( == nM ) return YM; int Ms = YM / * + YM % + nM;
int Y = Ms / ;
int M = Ms % ;
if ( == M )
{
M = ;
Y -= ;
}
return Y * + M;
} void test_addMonths() {
int YM = ;
int addedYM = addMonths(YM, );
cout << "addedYM: " << addedYM << endl; //
}

获取下一个月

/*
* 输入年月格式YM(如:201911), 返回年月格式,根据当前月推算下月
*/
int nextMonth(int YM)
{
int Y = YM / ;
int M = YM % ; if ( == M)
{
M = ;
Y = Y + ;
}
else
{
M = M + ;
} return (Y * + M);
} void test_nextMonth() {
int YM = ;
int next_month = nextMonth(YM);
cout << "next_month: " << next_month << endl; //
}

计算weekDay

// 返回 0-6 分别代表周一到周日
int calcWeekDay(int ymd)
{
int y = ymd / ;
int m = ymd / % ;
int d = ymd % ; // 此处表示把1,2月计算到上一年的13,14月
if (m == || m == ) {
m += ;
y--;
} // 基姆拉尔森计算公式
int week = (d + * m + * (m + ) / + y + y / - y / + y / ) % ; return week;
}

最新文章

  1. 解决iframe作为子窗口,刷新后iframe页面跳转到其它页面的问题
  2. UNIX网络编程-Poll模型学习
  3. Quartz.NET开源作业调度框架系列(五):AdoJobStore保存job到数据库
  4. (转) 坚持完成这套学习手册,你就可以去 Google 面试了
  5. ubuntu-16.10-desktop-amd64.iso 版本 安装 oracle 11gR2 11.2.0.1 database
  6. Magento模板Paypal付款不成功返回清空购物车产品【解决方案】
  7. Delphi IDE下载全地址
  8. webView的一些经验总结
  9. 我的Python成长之路---第四天---Python基础(14)---2016年1月23日(寒风刺骨)
  10. 极极极极极简的的增删查改(CRUD)解决方案
  11. Krajee插件的用法
  12. python3 requests + BeautifulSoup 爬取阳光网投诉贴详情实例代码
  13. 剑指offer-调整数组内奇偶数顺序
  14. 如何使SpringBoot作为Maven构建的项目的一个子模块
  15. MongoDB学习笔记(4)--collection
  16. thinkCMF----如何写标签
  17. redis详解(三)
  18. Codeforces Round #297 (Div. 2)C. Ilya and Sticks 贪心
  19. vector的哈希值 Codecraft-17 and Codeforces Round #391 (Div. 1 + Div. 2, combined) C
  20. Java容器概述

热门文章

  1. Activiti服务类- TaskService服务类
  2. 运算符重载之new与delete
  3. Codevs 1743 反转卡片(splay)
  4. crm-权限管理
  5. servlet 中session的使用方法(创建,使用)
  6. JMeter压力测试及并发量计算-2
  7. 黑马vue---59-60、组件中的data和methods
  8. mongoose 建立schema 和model
  9. LeetCode 搜索旋转排序数组
  10. 性能调优 | 如何通过性能调优突破 MySQL 数据库性能瓶颈?