计算月末最后一天

/*
* 输入年月格式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;
}

segi日期计算笔记的更多相关文章

  1. iOS学习笔记37-时间和日期计算

    一.时间和日期计算 我们在应用开发中,时常须要和时间打交道,比方获取当前时间,获取两个时间点相隔的时间等等,在iOS开发中与时间相关的类有例如以下几个: 1. NSDate:表示一个绝对的时间点 2. ...

  2. java日期比较,日期计算

    版权声明:本文为楼主原创文章,未经楼主允许不得转载,如要转载请注明来源. 都是常用的日期之间的比较方法,供以后参考. 热身:获取当前时间 SimpleDateFormat df = new Simpl ...

  3. CCF真题之日期计算

    201509-2 日期计算 问题描述 给定一个年份y和一个整数d,问这一年的第d天是几月几日? 注意闰年的2月有29天.满足下面条件之一的是闰年: 1) 年份是4的整数倍,而且不是100的整数倍: 2 ...

  4. SQL通过日期计算年龄

    首先建立一个表如下: ======================= BirthDay datetime not null Age 通过公式计算得出 ======================= 以 ...

  5. CalendarHelper日期计算工具,各种日期的获取和计算

    今天分享一个日期获取和计算的工具类,这个最初是用在项目中获取每周每月日期用的. <Attention> 之后逛帖子的时候发现了这个专门处理日期的库,java上也有,android上还为了避 ...

  6. php 日期 - 计算2个日期的差值

    /** * 日期-计算2个日期的差值 * @return int */ public function get_difference($date, $new_date) { $date = strto ...

  7. Javascript扩展String.prototype实现格式金额、格式时间、字符串连接、计算长度、是否包含、日期计算等功能

    <script src="Js/jquery-3.1.1.min.js"></script> <script type="text/java ...

  8. 日期计算、正则、sequence、索引、表连接、mybatis

    ************************** mybatis ******************************************* #{} 的参数替换是发生在 DBMS 中, ...

  9. JAVA中日期转换和日期计算的方法

    日期的格式有很多形式,在使用过程中经常需要转换,下面是各种类型转换的使用例子以及日期计算方法的例子. 一.不同格式日期相互转换方法 public class TestDateConvertUtil { ...

随机推荐

  1. [USACO19OPEN]Snakes

    题目链接 题目简介:有n组,每组有若干个蛇的蛇队伍.(也可以理解为n条长度若干的蛇.)我们要用网捕捉,中途可以改变网的大小.目标是浪费空间最小. 解法:首先明确方法:DP.设f[i][t]为捕捉了n条 ...

  2. Java中堆内存和栈内存有什么区别

    本文链接:https://blog.csdn.net/wangbo1998/article/details/80379016Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基 ...

  3. Noip2012 提高组 Day1 T1 Vigenère 密码

    题目描述 16 世纪法国外交家 Blaise de Vigenère 设计了一种多表密码加密算法――Vigenère 密 码.Vigenère 密码的加密解密算法简单易用,且破译难度比较高,曾在美国南 ...

  4. (转)实验文档1:跟我一步步安装部署kubernetes集群

    实验环境 基础架构 主机名 角色 ip HDSS7-11.host.com k8s代理节点1 10.4.7.11 HDSS7-12.host.com k8s代理节点2 10.4.7.12 HDSS7- ...

  5. chrome出现“由贵单位管理”原因及解决方法

    谷歌Google在声明里表示: 由贵单位管理指的是由设备或者账户管理员例如企业管理器可以用来强制更改谷歌浏览器配置的企业级策略.例如可以直接通过远程方式向所有受控用户添加书签,当管理员有进行这类操作时 ...

  6. Po类设计

    0.承接MySQL 表设计,同样地,这篇博客中一部分内容是Deolin的个人观点和习惯. 1.一般Po类的域是和DB表字段一一对应的, 而由于每个信息表和关联表都有id.insert_time.upd ...

  7. jenkins之插件下载失败

    1.更换地址 将默认地址 http://updates.jenkins-ci.org/update-center.json 改为 http://mirrors.jenkins-ci.org/statu ...

  8. CF1200A

    CF1200A 解法: 给出长度为n的字符串,字符串由'L'.'R'以及数字0~9组成.旅馆有10间房子,L代表客人从左边入住,R代表客人从右边入住,数字则表示第i间房子客人退房了.问经过这n次操作后 ...

  9. 解决百度文字识别SDK拍照不回调问题

    在使用百度文字识别SDK的时候,发现点了拍照后camera.takePicture(ShutterCallback shutter, PictureCallback raw,PictureCallba ...

  10. dpkg 删除 百度网盘 程序

    sudo dpkg -l baidu* 查询得到具体名字 sudo dpkg --purge baidunetdisk 解决