java日期比较例子等...

数据库中employ表,入职日期,今天日期:

测试代码:

  1 package javademo;
  2 
  3 import java.sql.Connection;
  4 import java.sql.DriverManager;
  5 import java.sql.ResultSet;
  6 import java.sql.Statement;
  7 import java.text.SimpleDateFormat;
  8 import java.util.Calendar;
  9 import java.util.Date;
 10 
 11 public class TimeCompare {
 12     
 13     public static void main(String args[]) throws Exception{
 14         Class.forName("com.mysql.jdbc.Driver");
 15         Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test_demo?user=root&password=root");
 16         Statement stmt = conn.createStatement();
 17         ResultSet rs = stmt.executeQuery("select * from employ");
 18         
 19         while(rs.next()){
 20             String hireDatestr = rs.getString("hiredate");
 21             Date hireDate = new SimpleDateFormat("yyyy-MM-dd").parse(hireDatestr);
 22             System.out.println("(方法一)入职天数: " + compartDay(new Date(), hireDate));
 23             System.out.println("(方法二)入职天数: " + intervalDays(new Date(), hireDate));
 24             System.out.println("入职日期距今月数: " + getMonthSpace(hireDate, new Date()));
 25             System.out.println("入职日期是否超过了2个月:" + afterFewMonth(hireDate, 2));
 26             System.out.println("入职是否已经有半年:" + afterFewMonth(hireDate, 6));
 27             System.out.println("入职是否已经有两周:" + afterFewWeek(hireDate, 2));
 28             
 29             System.out.println();
 30         }
 31         
 32         rs.close();
 33         stmt.close();
 34         conn.close();
 35     }
 36     
 37     //比较入职日期距今是否过了n个月
 38     public static boolean afterFewMonth(Date hireDate, int n){
 39         boolean result = false;
 40 
 41         Calendar c = Calendar.getInstance();
 42         c.add(Calendar.MONTH, n);
 43         
 44         if(hireDate.after(c.getTime())){
 45             result = true;
 46         }
 47         
 48         return result;
 49     }
 50     
 51     //比较入职是否有了n周
 52     /**
 53      * Calendar.DATE  : 代表天数
 54      * Calendar.WEDNESDAY: 代表周数
 55      * Calendar.MONTH : 代表月数
 56      * Calendar.YEAR :代表年数
 57      */
 58     public static boolean afterFewWeek(Date hireDate, int n){
 59         boolean result = false;
 60 
 61         Calendar c = Calendar.getInstance();
 62         c.add(Calendar.WEDNESDAY, n);
 63         System.out.println("计算"+n+"周后日期:" + c.getTime());
 64         
 65         if(hireDate.after(c.getTime())){
 66             result = true;
 67         }
 68         
 69         return result;
 70     }
 71     
 72     /**
 73      * 比较两个日期之间相差的月数
 74      * 只能比较月数,计算的不精确,只是单纯的月数之间的比较
 75      */
 76     public static int getMonthSpace(Date start, Date end){
 77         if(start.after(end)){
 78             Date temp = start;
 79             start = end;
 80             end = temp;
 81         }
 82         
 83         Calendar c = Calendar.getInstance();
 84         c.setTime(start);
 85         int year1 = c.get(Calendar.YEAR);
 86         int month1 = c.get(Calendar.MONTH);
 87         
 88         c.setTime(end);
 89         int year2 = c.get(Calendar.YEAR);
 90         int month2 = c.get(Calendar.MONTH);
 91         
 92         int result;
 93         if(year1==year2){
 94             result = month2 - month1;
 95         }else{
 96             result = 12*(year2-year1) + month2 - month1;
 97         }
 98         
 99         return result;
100     }
101     
102     /**
103      * 比较和今天相差的天数 方法一
104      * 用毫秒计算差值
105      */
106     public static int compartDay(Date date1, Date date2){
107         if(date1.after(date2)){
108             Date temp = date1;
109             date1 = date2;
110             date2 = temp;
111         }
112         long intervalMilli = date2.getTime() - date1.getTime();
113         return (int)(intervalMilli/(24*60*60*1000));
114     }
115     
116     /**
117      * 比较和今天相差的天数方法二
118      * 用日历的日来计算差值
119      */
120     public static int intervalDays(Date date1, Date date2){
121         if(date1.after(date2)){
122             Date temp = date1;
123             date1 = date2;
124             date2 = temp;
125         }
126         Calendar calendar = Calendar.getInstance();
127         calendar.setTime(date1);
128         int day1 = calendar.get(Calendar.DAY_OF_YEAR);
129         calendar.setTime(date2);
130         int day2 = calendar.get(Calendar.DAY_OF_YEAR);
131         return day2 - day1;
132     }
133 }

控制台打印:

转载于:https://www.cnblogs.com/tenWood/p/6493153.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值