版权声明:本文为楼主原创文章,未经楼主允许不得转载,如要转载请注明来源。

都是常用的日期之间的比较方法,供以后参考。

热身:获取当前时间

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
String nowDate = df.format(new Date());// new Date()为获取当前系统时间

注:楼主一直以为date类型不如string类型随心所欲,所以下面的比较都是string类型的date进行比较。如果你真的真的就是那么倔强,ok,下面是date转string的方法:

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
String date = df.format(Date类型的时间);

1.两个string类型的日期比较大小

  public static int compare_date(String DATE1, String DATE2) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date dt1 = df.parse(DATE1);
Date dt2 = df.parse(DATE2);
if (dt1.getTime() > dt2.getTime()) {
System.out.println("dt1 在dt2前");
return 1;
} else if (dt1.getTime() < dt2.getTime()) {
System.out.println("dt1在dt2后");
return -1;
} else {
return 0;
}
} catch (Exception exception) {
exception.printStackTrace();
}
return 0;
}

2.返回两个string类型日期之间相差的天数

  public static int daysBetween(String smdate,String bdate){
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
long time1 = 0;
long time2 = 0; try{
cal.setTime(sdf.parse(smdate));
time1 = cal.getTimeInMillis();
cal.setTime(sdf.parse(bdate));
time2 = cal.getTimeInMillis();
}catch(Exception e){
e.printStackTrace();
}
long between_days=(time2-time1)/(1000*3600*24); return Integer.parseInt(String.valueOf(between_days));
}

3.返回两个string类型日期相差的小时数

  public static int daysBetween2(String startTime, String endTime) {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH");
Calendar cal = Calendar.getInstance();
long time1 = 0;
long time2 = 0; try{
cal.setTime(sdf.parse(startTime));
time1 = cal.getTimeInMillis();
cal.setTime(sdf.parse(endTime));
time2 = cal.getTimeInMillis();
}catch(Exception e){
e.printStackTrace();
}
long between_days=(time2-time1)/(1000*3600); return Integer.parseInt(String.valueOf(between_days));
}

4.计算两段日期的重合日期

 /**
* 计算两段日期的重合日期
* @param str1 开始日期1
* @param str2 结束日期1
* @param str3 开始日期2
* @param str4 结束日期2
* @return
* @throws Exception
*/
public static Map<String,Object> comparisonRQ(String str1, String str2, String str3,
String str4) throws Exception {
String mesg = "";
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String startdate = "";
String enddate = "";
try {
Date dt1 = df.parse(str1);
Date dt2 = df.parse(str2);
Date dt3 = df.parse(str3);
Date dt4 = df.parse(str4);
if (dt1.getTime()<=dt3.getTime()&&dt3.getTime()<=dt2.getTime()&&dt2.getTime()<=dt4.getTime()) {
mesg = "f";//重合
startdate = str3;
enddate = str2;
}
if (dt1.getTime()>=dt3.getTime()&&dt3.getTime()<=dt2.getTime()&&dt2.getTime()<=dt4.getTime()) {
mesg = "f";//重合
startdate = str1;
enddate = str2;
} if (dt3.getTime()<=dt1.getTime()&&dt1.getTime()<=dt4.getTime()&&dt4.getTime()<=dt2.getTime()) {
mesg = "f";//重合
startdate = str1;
enddate = str4;
}
if (dt3.getTime()>=dt1.getTime()&&dt1.getTime()<=dt4.getTime()&&dt4.getTime()<=dt2.getTime()) {
mesg = "f";//重合
startdate = str3;
enddate = str4;
} System.out.println(startdate+"----"+enddate); }catch (ParseException e) {
e.printStackTrace();
throw new ParseException(e.getMessage(), 0);
}catch(Exception e){
e.printStackTrace();
throw new Exception(e);
}
Map<String,Object> map = new HashMap<String,Object>();
map.put("startdate", startdate);
map.put("enddate", enddate);
return map;
}

java日期比较,日期计算的更多相关文章

  1. java开源时间/日期库Joda-Time

    任何企业应用程序都需要处理时间问题.应用程序需要知道当前的时间点和下一个时间点,有时它们还必须计算这两个时间点之间的路径.使用 JDK 完成这项任务将非常痛苦和繁琐.现在来看看 Joda Time,一 ...

  2. java Joda-Time 对日期、时间操作

    任何企业应用程序都需要处理时间问题.应用程序需要知道当前的时间点和下一个时间点,有时它们还必须计算这两个时间点之间的路径.使用 JDK 完成这项任务将非常痛苦和繁琐.现在来看看 Joda Time,一 ...

  3. Java 8 时间日期库的20个使用示例

    java 8是如何处理时间及日期的 有人问我学习一个新库的最佳途径是什么?我的回答是,就是在实际项目中那样去使用它.在一个真实的项目中会有各种各样的需求,这会促使开发人员去探索和研究这个新库.简言之, ...

  4. 计算机程序的思维逻辑 (95) - Java 8的日期和时间API

    ​本节继续探讨Java 8的新特性,主要是介绍Java 8对日期和时间API的增强,关于日期和时间,我们在之前已经介绍过两节了,32节介绍了Java 1.8以前的日期和时间API,主要的类是Date和 ...

  5. Java编程的逻辑 (95) - Java 8的日期和时间API

    ​本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...

  6. Java 8 新日期时间 API

    Java 8 新日期时间 API 1. LocalDate.LocalTime.LocalDateTime LocalDate.LocalTime.LocalDateTime 实例是不可变的对象,分别 ...

  7. java android中日期时间 问题总结

    Date 类型: Date date = new Date();   // 代表获取当前系统日期和时间 System.out.println(date); 使用类的方法设置时间和日期:(通过该方法初始 ...

  8. Java 8 时间日期库的20个使用演示样例

    除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务演示样例来学习怎样使用Java 8的这套API.Java对日 ...

  9. Java中的日期表示类

    一.概述 Java中的日期类设计的比较失败,刚开始使用Date来计算时间,后来大部分Date类的方法都过时了:想用Calendar类代替Date类,然而Calendar类也是不尽如人意.下面简单介绍下 ...

  10. java和javascript日期详解

    ** java,js日期转换:** <Excerpt in index | 首页摘要> java的各种日期转换 <The rest of contents | 余下全文> 日期 ...

随机推荐

  1. Python 初级项目:远程操控电脑(三)-极客学院

    http://www.jikexueyuan.com/course/2376_1.html

  2. C#面向对象总结2

    1.值类型和引用类型: 值类型:int.double.bool.char.decimal.struct.enum 引用类型:string.自定义类.数组 存储: 值类型的值是存储在内存的栈当中. 引用 ...

  3. jquery替换URL参数值

    由于经常会用到替换URL参数值,而网上写的方法代码都太长了,所以在这里写了一个简单的方法,供大家使用. 说明: reLoad(参数名,参数值) function reLoad(p, v) { var ...

  4. Android RadioGroup 及资源文件 & selector

    RadioGroup :单选组         RadioButton :单选按钮 RadioButton和CheckBox的区别: 1.单个RadioButton在选中后,通过点击无法变为未选中 单 ...

  5. OC之0801

    1,字符串 字符串的创建:两种常用初始化方式 NSString *str=[[NSString alloc]initWithFormat:@"i am a boy"]; NSStr ...

  6. Mybatis-动态 SQL

    MyBatis 的强大特性之一便是它的动态 SQL. 如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时候要确保不能忘了必要的空格,还要注意省 ...

  7. iOS 利用 Framework 进行动态更新

    http://nixwang.com/2015/11/09/ios-dynamic-update/ 前言 目前 iOS 上的动态更新方案主要有以下 4 种: HTML 5 lua(wax)hotpat ...

  8. codeforces 682D(DP)

    题目链接:http://codeforces.com/contest/682/problem/D 思路:dp[i][j][l][0]表示a串前i和b串前j利用a[i] == b[j]所得到的最长子序列 ...

  9. C# 计算时间差 用timespan函数

    TimeSpan 结构  表示一个时间间隔. 命名空间:System 程序集:mscorlib(在 mscorlib.dll 中) 1.DateTime值类型代表了一个从公元0001年1月1日0点0分 ...

  10. nginx+tomcat集群配置(4)--rewrite规则和多应用根目录设定思路

    前言: nginx中有一块很重要的概念, 就是rewrite规则. 它会对URL进行修改, 然后进行内部的重定向. rewrite授予了nginx更多的自由, 使得后级服务的接入更加地方便. 本文将简 ...