java截取日期范围并计算相差月数
前两天,媳妇单位让整理excel的某一个单元格内两个日期范围的相差月数,本人对excel操作不是很熟练,便写了个小程序计算了一下,原始需求如下:

计算投资期限的范围,并得到期限范围的相差月数
思路1:得到单元格内的两个日期范围,分别截取年月日,并比较年、月、日
public int getMonth(int row) {
int result = 0;
int coll = 14;
String st = CommonF.getExcelBy07(path, index, row, coll);
//System.out.println(st);
String s[] = st.split("-");
String s1 = s[0];
String s2 = s[1];
//System.out.println(s1);
//System.out.println(s2);
String date1[] = s1.split("\\.");
String date2[] = s2.split("\\.");
int year1 = Integer.parseInt(date1[0]);
int month1 = Integer.parseInt(date1[1]);
int day1 = Integer.parseInt(date1[2]);
int year2 = Integer.parseInt(date2[0]);
int month2 = Integer.parseInt(date2[1]);
int day2 = Integer.parseInt(date2[2]);
if(year1==year2) {
if(month1==month2) {
if(day1==day2) {
result = 0;
}
}else if(month1<month2) {
if(day1==1) {
result = month2 - month1 + 1;
}else {
result = month2 - month1;
}
}else if(month1>month2) {
result = month1 - month2;
}
}else if(year1<year2) {
if(month1==month2) {
if(day1==1) {
result = (year2 - year1)*12 + 1;
}else {
result = (year2 - year1)*12;
}
}else if(month1<month2) {
if(day1==1) {
result = (year2 - year1)*12 + (month2 - month1)+1;
}else {
result = (year2 - year1)*12 + (month2 - month1);
}
}else if(month1>month2) {
if(day1==1) {
result = (year2 - year1)*12 - (month1 - month2)+1;
}else {
result = (year2 - year1)*12 - (month1 - month2);
}
}
}else if(year1>year2){
result = -2;//-2代表两个年数输入有误
}else {
result = -1;//-1代表日期输入有误
}
System.out.println("result= "+result);
return result;
}
思路2:将日期范围转换为calendar,得到年月日并做比较
int result = 0;
int coll = 14; String st = CommonF.getExcel(path, index, 4, coll);
//System.out.println(st);
String s[] = st.split("-");
String s1 = s[0];
String s2 = s[1]; //System.out.println(s1);
//System.out.println(s2); String date1[] = s1.split("\\.");
String date2[] = s2.split("\\."); DateFormat df = new SimpleDateFormat("yyyy.MM.dd");
try {
Date d1 = df.parse(s[0]);
Date d2 = df.parse(s[1]); Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
c1.setTime(d1);
c2.setTime(d2);
System.out.println(c1.get(Calendar.YEAR));
java截取日期范围并计算相差月数的更多相关文章
- Oracle 计算两个日期间隔的天数、月数和年数
在Oracle中计算两个日期间隔的天数.月数和年数: 一.天数: 在Oracle中,两个日期直接相减,便可以得到天数: select to_date('08/06/2015','mm/dd/yyyy' ...
- 在Oracle中计算两个日期间隔的天数、月数和年数
一.天数: 在Oracle中,两个日期直接相减,便可以得到天数: select to_date('08/06/2015','mm/dd/yyyy')-to_date('07/01/2015','mm/ ...
- Java 计算两个日期相差月数、天数
package com.myjava; import java.text.ParseException; import java.text.SimpleDateFormat; import java. ...
- Java 计算两个日期相差月数
package com.myjava; import java.text.ParseException;import java.text.SimpleDateFormat;import java.ut ...
- oracle中计算两个日期的相差天数、月数、年数、小时数、分钟数、秒数等
oracle如何计算两个日期的相差天数.月数.年数.小时数.分钟数.秒数 1.相差天数(两个日期相减) --Oracle中两个日期相差天数-- select TO_NUMBER(TO_DATE('20 ...
- sql存储过程中,如何根据指定日期、月数、天数推算预产日期
我这边有一个业务,根据某个指定日期,推算某个患者的预产日期 原理:比如孕产的预产日期的算法(预产日期 = 末次月经日期+ 10月+8天) 那么我们怎么通过存储过程来实现呢? 首先分析条件 需要一个指定 ...
- 计算两个日期之间相差的年数月数天数(JS实现)
前言 如何计算年龄?我的第一直觉做法:(当前时间戳 - 出生时的时间戳)/ (365*86400) 所得结果向下取整.后来发现这种做法获得的结果不准确,不是多了一岁就是少了一岁,不能简单粗暴的这么处 ...
- MySQL计算两个日期相差的天数、月数、年数
MySQL自带的日期函数TIMESTAMPDIFF计算两个日期相差的秒数.分钟数.小时数.天数.周数.季度数.月数.年数,当前日期增加或者减少一天.一周等等. SELECT TIMESTAMPDIFF ...
- JAVA中日期转换和日期计算的方法
日期的格式有很多形式,在使用过程中经常需要转换,下面是各种类型转换的使用例子以及日期计算方法的例子. 一.不同格式日期相互转换方法 public class TestDateConvertUtil { ...
随机推荐
- socket调用流程的函数及数据结构
如有错误,欢迎指正. 如果需要,可以提供visio原文件. 参考: 1. <追踪Linux TCPIP代码运行--基于2.6内核> 2. Linux Kernel 2.6.26
- KM算法
链接: http://blog.csdn.net/lvshubao1314/article/details/41702291
- (转)x11vnc配置--ubuntu14.04
原文网址:http://www.cnblogs.com/elmaple/p/4354814.html x11vnc是连接到真实的X会话,相比vnc4server和tightvncserver自己创建不 ...
- 成熟的RosettaNet解决方案软件介绍
RosettaNet是一套B2B标准,以标准来优化供应链管理流程,它可以缩短整个供应链各个供货周期.RosettaNet 标准为电子商务标准化提供一个健壮的.非专有的解决方案,它是免费的,通过 Ros ...
- windows下使用makecert命令生成自签名证书
1.makecert命令路径 C:\Program Files (x86)\Windows Kits\8.1\bin\x64 2.生成一个自签名证书 makecert -r -pe -n " ...
- WPF超级链接
一.添加样式 <Style x:Key="LinkLabelStyle"> <Setter Property="Control.Padding" ...
- DigitalOcean上SSH Key的创建(附DigitalOcean邀请)
DigitalOcean是一家云主机商家,最低配置512M内存,20G的SSD,每月只有5刀.半个月前刚刚在这上面买了一个VPS,创建Droplet的时候看见创建SSH Key的时候就有点懵,不知道这 ...
- HTML5中的SVG
* SVG * 基本内容 * SVG并不属于HTML5专有内容 * HTML5提供有关SVG原生的内容 * 在HTML5出现之前,就有SVG内容 * SVG,简单来说就是矢量图 * SVG文件的扩展名 ...
- 浅谈React受控与非受控组件
背景 React内部分别使用了props, state来区分组件的属性和状态.props用来定义组件外部传进来的属性, 属于那种经过外部定义之后, 组件内部就无法改变.而state维持组件内部的状态更 ...
- Android破解之Lic文件加密程序(首例)
我不会写Android,这是我第一个破解Android的例子,耗时接近一天,希望大神不要见笑! 本程序为商业软件,不便发布APK程序. 不要给我发消息,我不得回,有问题,直接回帖就可以了. 准备工作 ...