前两天,媳妇单位让整理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截取日期范围并计算相差月数的更多相关文章

  1. Oracle 计算两个日期间隔的天数、月数和年数

    在Oracle中计算两个日期间隔的天数.月数和年数: 一.天数: 在Oracle中,两个日期直接相减,便可以得到天数: select to_date('08/06/2015','mm/dd/yyyy' ...

  2. 在Oracle中计算两个日期间隔的天数、月数和年数

    一.天数: 在Oracle中,两个日期直接相减,便可以得到天数: select to_date('08/06/2015','mm/dd/yyyy')-to_date('07/01/2015','mm/ ...

  3. Java 计算两个日期相差月数、天数

    package com.myjava; import java.text.ParseException; import java.text.SimpleDateFormat; import java. ...

  4. Java 计算两个日期相差月数

    package com.myjava; import java.text.ParseException;import java.text.SimpleDateFormat;import java.ut ...

  5. oracle中计算两个日期的相差天数、月数、年数、小时数、分钟数、秒数等

    oracle如何计算两个日期的相差天数.月数.年数.小时数.分钟数.秒数 1.相差天数(两个日期相减) --Oracle中两个日期相差天数-- select TO_NUMBER(TO_DATE('20 ...

  6. sql存储过程中,如何根据指定日期、月数、天数推算预产日期

    我这边有一个业务,根据某个指定日期,推算某个患者的预产日期 原理:比如孕产的预产日期的算法(预产日期 = 末次月经日期+ 10月+8天) 那么我们怎么通过存储过程来实现呢? 首先分析条件 需要一个指定 ...

  7. 计算两个日期之间相差的年数月数天数(JS实现)

    前言 如何计算年龄?我的第一直觉做法:(当前时间戳 - 出生时的时间戳)/ (365*86400)  所得结果向下取整.后来发现这种做法获得的结果不准确,不是多了一岁就是少了一岁,不能简单粗暴的这么处 ...

  8. MySQL计算两个日期相差的天数、月数、年数

    MySQL自带的日期函数TIMESTAMPDIFF计算两个日期相差的秒数.分钟数.小时数.天数.周数.季度数.月数.年数,当前日期增加或者减少一天.一周等等. SELECT TIMESTAMPDIFF ...

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

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

随机推荐

  1. csharp: Importing or Exporting Data from Worksheets using aspose cell

    /// <summary> /// 涂聚文 /// 20150728 /// EXCEL win7 32位,64位OK /// </summary> public class ...

  2. php中的常用数组函数(三)(获取数组交集的函数们 array_intersect()、array_intersect_key()、array_intersect_assoc()、array_intersect_uassoc()、array_intersect_ukey())

    这5个获取交集的函数 有 5个对应的获取差集的函数.我是链接. array_intersect($arr1, $arr2); //获得数组同键值的交集 array_intersect_key($arr ...

  3. swift学习笔记之-枚举

    //枚举定义 import UIKit //枚举定义 (枚举.结构体.类的名字首字母必须大写,表示为定义了新的类型) /*枚举为一组相关的值定义了一个共同的类型,使你可以在你的代码中以类型安全的方式来 ...

  4. MongoDB整合Spring

    1.环境 Jdk:1.6.0_10-rc2 Spring3.1.2  下载 依赖jar文件: 2.相关配置 ①.Spring配置文件 <?xml version="1.0"  ...

  5. javascript中的defer是什么?

    今天看到stackoverflow上的这样一个问题(问题链接),大概是说用jQuery获取不到元素,这是我们刚开始接触javascript常常会碰到的问题,回答者列举了4中方法去解决获取不到元素的问题 ...

  6. Configure SSL for SharePoint 2013

    http://blogs.msdn.com/b/fabdulwahab/archive/2013/01/21/configure-ssl-for-sharepoint-2013.aspx In thi ...

  7. NSArray数字和排序

    1.数字 int main(int argc, const char * argv[]) { @autoreleasepool { //添加空白 [NSNull null] // NSArray *a ...

  8. 小波说雨燕 第三季 构建 swift UI 之 UI组件集-视图集(三)Activity Indicators视图 学习笔记

    当我们应用程序执行一个比较耗时的操作,我们需要给用户一个提示,那么这个提示比较好的方式方法呢就是  进度条  或者  一个齿轮转.我们就需要Activity Indicators组件 Indicato ...

  9. IPv4中IP地址分类

    分三个部分进行讲述: 1 五类IP 2 特殊用途的IP 3 私有IP 1 五类IP IPV4简单粗暴地把IP地址分为五类.分类方法如下图所示: 也就是说,分为以下几类: A: 0.0.0.0-127. ...

  10. Burp Suite安装及详细使用教程-Intruder模块详解

    01 介绍 安装要求: Java 的V1.5 + 安装( 推荐使用最新的JRE ), 可从这里免费 http://java.sun.com/j2se/downloads.html Burp Suite ...