数据库中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 }
控制台打印:
原文:http://www.cnblogs.com/tenWood/p/6493153.html