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 { ...
随机推荐
- Ajax,谷歌提示AutoCompleteExtender控件
提示内容从数据库中读取: ------------------------------------------页面 <asp:ScriptManager ID="ScriptManag ...
- SpreadJS 中应用 KnockoutJS 技术
SpreadJS 支持 Knockout (KO)技术, KnockoutJS 是一个使用 MVVM 模式的 JavaScript 库,允许双向数据绑定,使数据和UI界面进行实时的交互更新.关于KO的 ...
- linux下mysql忘记root密码解决方法
如果使用 MySQL 数据库忘记了root账号密码,可以通过调节配置文件,跳过密码的方式登数据库, 在数据库里面修改账号密码,一般默认的账号是 root 1.编辑 MySQL 配置文件 my.cnf ...
- spring boot学习笔记
spring boot 是什么 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程. spring boot采用了“约定优于配置” ...
- 怎样在win7系统配置数据源
1.点击桌面的我Windows 图标,找打控制面板 2.进入控制面板主页,选择系统和安全,进入系统和安全 3.进入系统和安全主页后选择管理工具,点击进入 4.进入管理工具后,选择数据源,进行数据源的配 ...
- 某网SQL注入漏洞实战
root@kali:~# sqlmap -u http://dn.you.com/shop.php?id=10 -v 1 --dbs available databases [8]: [*] ...
- iOS NSNumber转化NSString之description
我们经常需要把一个数字转成字符串,当你不需要配合其他字符串的时候可以用description. /** description属于NSObject 值是NSNumber时候,不用stringWithF ...
- xCode删除storyboard,新建window并启动
application:didFinishLaunchingWithOptions该函数是应用程序启动之后首次加载页面的函数,删除storyboard之后,需要在这里new出新的window,初始化, ...
- iOS设计模式之迭代器模式
迭代器模式 基本理解 迭代器模式(Iterrator):提供一个方法顺序访问一个聚合对象中的各个元素,而又不暴露该元素的内部表示. 当你访问一个聚合对象,而且不管这些对象是什么都需要遍历的时候,你就应 ...
- 用二进制大对象类型Blob实现图片入库与出库的操作
package readclobDemo.bao; import java.io.FileInputStream; import java.io.FileNotFoundException; impo ...