java中计算两个日期的月数差
来源:互联网 发布:祖龙娱乐 知乎 编辑:程序博客网 时间:2024/06/06 00:49
/**
* 获取两个日期相差的月数
* @param d2 较大的日期
* @param d1 较小的日期
* @return 如果d1>d2返回 月数差 否则返回0
*/
public static int getMonthDiff(String d1, String d2)throws ParseException {
Calendar c1 = Calendar.getInstance();
java.util.Date date1=sdf.parse(d1);
java.util.Date date2=sdf.parse(d2);
c1.setTime(date1);
int year1 = c1.get(Calendar.YEAR);
int year2 = c2.get(Calendar.YEAR);
int month1 = c1.get(Calendar.MONTH);
int month2 = c2.get(Calendar.MONTH);
int day1 = c1.get(Calendar.DAY_OF_MONTH);
int day2 = c2.get(Calendar.DAY_OF_MONTH);
// 获取年的差值 假设 d1 = 2015-9-30 d2 = 2015-12-16
int yearInterval = year2 - year1;
// 如果 d1的 月-日 小于 d2的 月-日 那么 yearInterval-- 这样就得到了相差的年数
if(month2 < month1 || month1 == month2 && day2 < day1) yearInterval --;
// 获取月数差值
int monthInterval = (month2 + 12) - month1 ;
if(day2 > day1) monthInterval ++;
monthInterval %= 12;
return yearInterval * 12 + monthInterval;
}
public static void main(String[] args) throws ParseException {
System.out.println(MyCalendar.getMonthDiff("2015-3-30", "2016-6-1"));
* 获取两个日期相差的月数
* @param d2 较大的日期
* @param d1 较小的日期
* @return 如果d1>d2返回 月数差 否则返回0
*/
public static int getMonthDiff(String d1, String d2)throws ParseException {
Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
//将String日期转换成date
java.util.Date date1=sdf.parse(d1);
java.util.Date date2=sdf.parse(d2);
c1.setTime(date1);
c2.setTime(date2);
//判断两个日期的大小
int year1 = c1.get(Calendar.YEAR);
int year2 = c2.get(Calendar.YEAR);
int month1 = c1.get(Calendar.MONTH);
int month2 = c2.get(Calendar.MONTH);
int day1 = c1.get(Calendar.DAY_OF_MONTH);
int day2 = c2.get(Calendar.DAY_OF_MONTH);
// 获取年的差值 假设 d1 = 2015-9-30 d2 = 2015-12-16
int yearInterval = year2 - year1;
// 如果 d1的 月-日 小于 d2的 月-日 那么 yearInterval-- 这样就得到了相差的年数
if(month2 < month1 || month1 == month2 && day2 < day1) yearInterval --;
// 获取月数差值
int monthInterval = (month2 + 12) - month1 ;
if(day2 > day1) monthInterval ++;
monthInterval %= 12;
return yearInterval * 12 + monthInterval;
}
public static void main(String[] args) throws ParseException {
System.out.println(MyCalendar.getMonthDiff("2015-3-30", "2016-6-1"));
}
总结:但凡求周期数之间的差值,都采用(a1+周期值-a2)%周期值,即取余法(a1)
例如:周期为12(最大值不能大于12)
[11,6]:(6+12-11)%12 = 7
[7,6] :(6+12-7)%12 = 11
[6,7] :(7+12-6)%12 = 1
阅读全文
0 0
- java中计算两个日期的月数差
- java计算两个日期的月数差
- java计算两个日期的月数差
- Java中计算任意两个日期之间的工作天数
- Java中计算任意两个日期之间的工作天数
- java中计算两个日期之间差的天数
- java中计算两个日期相差几天
- java中计算两个日期相差几天
- Java 中计算两个日期差
- Java中计算两个日期相差几天
- java中计算两个日期相差几天
- java中计算两个日期相差几天
- JAVA计算两个日期之间的天数
- Java 计算两个日期的时间差
- Java 计算两个日期相差的天数
- java 计算两个日期的时间差
- Java 计算两个日期相差的天数
- java 计算两个日期的相隔 年月日
- FFmpeg X264 H264编码指南[译]
- 点击锚点不到顶部,向下偏移一段距离
- 阿里云首席安全科学家吴翰清的思考:弹性安全网络,构建下一代安全的互联网
- Android studio中.9图片的含义及制作教程
- POJ-3186-Treats for the Cows
- java中计算两个日期的月数差
- EasyStream系列4之rtmp转rtmp
- 《Windows程序设计》读书笔二十 多任务和多线程
- SpringMVC单元测试
- 给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。
- org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.Reflecti
- 2017-8-16
- 胡思乱想之保险
- maven 笔记