java里的时间类是比较简单的,如果没有对时间相关类总结学习过,有些需求或许不能立即写出来。现做几个简单的时间编码方法,供以后参考查阅。
1 //获取距离当天前三个月的日期 2 { 3 Calendar calendar = Calendar.getInstance(); 4 calendar.add(Calendar.MONTH, -3); 5 SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); 6 String predate = format.format(calendar.getTime()); 7 Date now = new Date(); 8 SimpleDateFormat nformat = new SimpleDateFormat("yyyyMMdd"); 9 String nowdate = nformat.format(now); 10 System.out.println(predate+";"+nowdate); 11 }
输出:
20130826;20131126
1 //日期date是星期几 2 int getWeekNum(Date date){ 3 Calendar calendar = Calendar.getInstance(); 4 calendar.setTime(date); 5 int num = calendar.get(Calendar.DAY_OF_WEEK); 6 return num==1?7:num-1; 7 }
输出: 星期一:1 星期二:2 星期三:3 星期四:4 星期五:5 星期六:6 星期日:7
1 //判断一年是否为闰年 2 static boolean IsLeapYear(int year){ 3 return (year % 400 == 0 || year % 4 == 0 && year % 100 != 0); 4 } 5 //获得某一年的总天数 6 static int GetAllDays(int year){ 7 return (IsLeapYear(year)? 366: 365); 8 } 9 //获得某年、某月的最大天数 10 static int GetMaxDay(int year,int month){ 11 switch(month) 12 { 13 case 1: 14 case 3: 15 case 5: 16 case 7: 17 case 8: 18 case 10: 19 case 12: 20 return 31; 21 case 4: 22 case 6: 23 case 9: 24 case 11: 25 return 30; 26 case 2: 27 return (IsLeapYear(year)? 29: 28); 28 default: 29 return -1; 30 } 31 } 32 //获得某年、某月、某日是这一年的第几天 33 static int GetDays(int year,int month,int day){ 34 int sum = 0; 35 36 for(int i = 1; i < month ; i++){ 37 sum += GetMaxDay(year,i); 38 } 39 40 return sum+day; 41 } 42 //获得某年某月某日的下一天 43 static void GetNextDay(int year,int month,int day){ 44 if(day != GetMaxDay(year,month)){ 45 day++; 46 }else 47 { 48 if(month != 12) 49 {month++; day = 1;} 50 else 51 {year++; month = day =1;} 52 } 53 } 54 //获得某年某月某日的前一天 55 static void GetPreDay(int year,int month,int day){ 56 if(day != 1){ 57 day--; 58 }else{ 59 if(month != 1){ 60 month--; 61 GetMaxDay(year,month); 62 } 63 else{ 64 year--;month = 12;day = 31; 65 } 66 } 67 } 68 //获得某年某月某日n天之后的日期 69 static void GetXDay(int year,int month,int day,int X){ 70 for(int i = 1; i<= X; i++){ 71 if(day != GetMaxDay(year,month)){ 72 day++; 73 }else{ 74 if(month != 12){ 75 month++;day = 1; 76 }else{ 77 year++; 78 month = day = 1; 79 } 80 } 81 } 82 System.out.println(X+" 天后是:"+year+"-"+month+"-"+day); 83 84 85 } 86 //比较日期大小 87 static int CompareDay(int year1,int month1,int day1, int year2,int month2,int day2){ 88 return year1 != year2? (year1-year2):(month1 != month2 ? (month1-month2): day1-day2); 89 } 90 //求日期之差 91 static int GetDateDiff1(int year1,int month1,int day1,int year2,int month2,int day2){ 92 int sum = GetAllDays(year1) - GetDays(year1,month1,day1); 93 for(int i = year1+1; i < year2; i++ ){ 94 sum += GetAllDays(i); 95 } 96 sum += GetDays(year2,month2,day2); 97 return sum; 98 } 99 static int GetDateDiff(int year1,int month1,int day1,int year2,int month2,int day2){ 100 if(CompareDay(year1,month1,day1,year2,month2,day2) > 0){ 101 return -GetDateDiff1(year2,month2,day2,year1,month1,day1); 102 }else if(CompareDay(year1,month1,day1,year2,month2,day2) < 0){ 103 return GetDateDiff1(year1,month1,day1,year2,month2,day2); 104 } 105 return 0; 106 }
1 //指定时间距离当前时间 2 String getAwayTime(long time){ 3 Calendar calendar = Calendar.getInstance(); 4 long awaytime = calendar.getTimeInMillis()-time; 5 if(awaytime/1000 < 60){ 6 return "不到1分钟!"; 7 } 8 if(awaytime/1000/60 < 60){ 9 return awaytime/1000/60+"分钟前!"; 10 } 11 if(awaytime/1000/60/60 < 24){ 12 return awaytime/1000/60/60+"小时前!"; 13 } 14 return awaytime/1000/60/60/24+"天前!"; 15 }
/** * 获取当前日期 * 如 20120412 * */ public static String getCurrDate(){ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); return sdf.format(new Date()); } /** * 获取当前年份 * 如 2012 * */ public static String getCurrDate(){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy"); return sdf.format(new Date()); }