| @@ -0,0 +1,893 @@ | |||||
| package com.simple.utils; | |||||
| import javax.xml.datatype.XMLGregorianCalendar; | |||||
| import java.sql.Timestamp; | |||||
| import java.text.DateFormat; | |||||
| import java.text.ParseException; | |||||
| import java.text.SimpleDateFormat; | |||||
| import java.util.ArrayList; | |||||
| import java.util.Calendar; | |||||
| import java.util.Date; | |||||
| import java.util.List; | |||||
| /** | |||||
| * 日期处理 | |||||
| * | |||||
| * @author stormeye.wu | |||||
| * @email wugq@mippoint.com | |||||
| * @date 2016年12月21日 下午12:53:33 | |||||
| */ | |||||
| public class DateUtils { | |||||
| /** 时间格式(yyyy-MM-dd) */ | |||||
| public final static String DATE_PATTERN = "yyyy-MM-dd"; | |||||
| /** 时间格式(yyyy-MM-dd HH:mm:ss) */ | |||||
| public final static String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; | |||||
| public final static String[] weekObj=new String[]{"日","一","二","三","四","五","六"}; | |||||
| public static String format(Date date) { | |||||
| return format(date, DATE_PATTERN); | |||||
| } | |||||
| public static String format(Date date, String pattern) { | |||||
| if(date != null){ | |||||
| SimpleDateFormat df = new SimpleDateFormat(pattern); | |||||
| return df.format(date); | |||||
| } | |||||
| return null; | |||||
| } | |||||
| public static final int MONTH_JAN = 1; | |||||
| public static final int MONTH_FEB = 2; | |||||
| public static final int MONTH_MAR = 3; | |||||
| public static final int MONTH_APR = 4; | |||||
| public static final int MONTH_MAY = 5; | |||||
| public static final int MONTH_JUN = 6; | |||||
| public static final int MONTH_JUL = 7; | |||||
| public static final int MONTH_AUG = 8; | |||||
| public static final int MONTH_SEP = 9; | |||||
| public static final int MONTH_OCT = 10; | |||||
| public static final int MONTH_NOV = 11; | |||||
| public static final int MONTH_DEC = 12; | |||||
| public static int TIME_ROOT = 2011; | |||||
| /** | |||||
| * 获得系统时间 TODO: format:yyyy-MM-dd HH:mm:ss | |||||
| * | |||||
| * @return time | |||||
| */ | |||||
| public static String getSystemTime(String format) { | |||||
| // 系统时间 | |||||
| String time = ""; | |||||
| SimpleDateFormat timeformat = new SimpleDateFormat(format); | |||||
| time = timeformat.format(Calendar.getInstance().getTime());// 求得本地机的系统时间; | |||||
| return time; | |||||
| } | |||||
| public static Calendar getDateFromString(String timeStr, String format) { | |||||
| SimpleDateFormat formatter = new SimpleDateFormat(format); | |||||
| Calendar calendar = Calendar.getInstance(); | |||||
| try { | |||||
| Date date = formatter.parse(timeStr); | |||||
| calendar.setTime(date); | |||||
| } catch (ParseException e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| return calendar; | |||||
| } | |||||
| /** | |||||
| * 获得系统时间 TODO: format:yyyy-MM-dd HH:mm:ss | |||||
| * | |||||
| * @return Calendar | |||||
| */ | |||||
| public static Calendar getSystemTime() { | |||||
| // 系统时间 | |||||
| Calendar time = Calendar.getInstance(); | |||||
| time.setTime(new Date());// 求得本地机的系统时间; | |||||
| return time; | |||||
| } | |||||
| /** | |||||
| * 时间比较 | |||||
| * | |||||
| * @param time1 | |||||
| * @param time2 | |||||
| * @return | |||||
| */ | |||||
| public static boolean isDateBefore(Calendar time1, Calendar time2) { | |||||
| if (time1 != null && time2 != null) { | |||||
| return time1.getTime().before(time2.getTime()); | |||||
| } | |||||
| return false; | |||||
| } | |||||
| /** | |||||
| * 时间比较 | |||||
| * | |||||
| * @param time1 | |||||
| * @param time2 | |||||
| * @return | |||||
| */ | |||||
| public static boolean isDateAfter(Calendar time1, Calendar time2) { | |||||
| if (time1 != null && time2 != null) { | |||||
| return time1.getTime().before(time2.getTime()); | |||||
| } | |||||
| return false; | |||||
| } | |||||
| /** | |||||
| * 时间比较 系统时间早于输入时间 | |||||
| * | |||||
| * @param date2 | |||||
| * @return | |||||
| */ | |||||
| public static boolean isDateBefore(String date2) { | |||||
| try { | |||||
| // 获得系统时间 | |||||
| Date date1 = new Date(); | |||||
| DateFormat df = DateFormat.getDateTimeInstance(); | |||||
| return date1.before(df.parse(date2)); | |||||
| } catch (ParseException e) { | |||||
| e.printStackTrace(); | |||||
| return false; | |||||
| } | |||||
| } | |||||
| /** | |||||
| * 系统时间晚于输入时间 | |||||
| * | |||||
| * @param date2 | |||||
| * @return | |||||
| */ | |||||
| public static boolean isDateAfter(String date2) { | |||||
| try { | |||||
| // 获得系统时间 | |||||
| Date date1 = new Date(); | |||||
| DateFormat df = DateFormat.getDateTimeInstance(); | |||||
| return date1.after(df.parse(date2)); | |||||
| } catch (ParseException e) { | |||||
| e.printStackTrace(); | |||||
| return false; | |||||
| } | |||||
| } | |||||
| /** | |||||
| * 时间比较(不含日期) 系统时间早于输入时间 | |||||
| * | |||||
| * @param time | |||||
| * @return | |||||
| */ | |||||
| public static boolean isTimeBefore(String time) { | |||||
| String date = ""; | |||||
| SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | |||||
| Date dd = Calendar.getInstance().getTime(); | |||||
| date = sdf.format(dd); | |||||
| return isDateBefore(date + " " + time); | |||||
| } | |||||
| /** | |||||
| * 时间比较(不含日期) 系统时间晚于输入时间 | |||||
| * | |||||
| * @param time | |||||
| * @return | |||||
| */ | |||||
| public static boolean isTimeAfter(String time) { | |||||
| String date = ""; | |||||
| SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | |||||
| Date dd = Calendar.getInstance().getTime(); | |||||
| date = sdf.format(dd); | |||||
| return isDateAfter(date + " " + time); | |||||
| } | |||||
| /** | |||||
| * 时间转换 TODO:将框架时间控件获得的时间转化成自己想要的时间 | |||||
| * | |||||
| * @return | |||||
| */ | |||||
| public static String timeFormat(String format, String oldTime) { | |||||
| String formatTime = ""; | |||||
| if (!"".equals(oldTime)) { | |||||
| try { | |||||
| SimpleDateFormat time = new SimpleDateFormat( | |||||
| "yyyy-MM-dd HH:mm:ss"); | |||||
| Date date = time.parse(oldTime); | |||||
| SimpleDateFormat timeformat = new SimpleDateFormat(format); | |||||
| formatTime = timeformat.format(date); | |||||
| } catch (ParseException e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| } | |||||
| return formatTime; | |||||
| } | |||||
| public static String date2String(Calendar calendar) { | |||||
| Date date = calendar.getTime(); | |||||
| SimpleDateFormat dateFormatter = new SimpleDateFormat( | |||||
| "yyyy-MM-dd HH:mm:ss"); | |||||
| String timeStr = dateFormatter.format(date); | |||||
| return timeStr; | |||||
| } | |||||
| public static String date2StringYMD(Calendar calendar) { | |||||
| Date date = calendar.getTime(); | |||||
| SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd"); | |||||
| String timeStr = dateFormatter.format(date); | |||||
| return timeStr; | |||||
| } | |||||
| public static String date2String(Date date) { | |||||
| SimpleDateFormat dateFormatter = new SimpleDateFormat( | |||||
| "yyyy-MM-dd HH:mm:ss"); | |||||
| String timeStr = dateFormatter.format(date); | |||||
| return timeStr; | |||||
| } | |||||
| public static String date2String(Date date, String fomartStr) { | |||||
| SimpleDateFormat dateFormatter = new SimpleDateFormat(fomartStr); | |||||
| String timeStr = dateFormatter.format(date); | |||||
| return timeStr; | |||||
| } | |||||
| public static String date2String(Calendar date, String fomartStr) { | |||||
| SimpleDateFormat dateFormatter = new SimpleDateFormat(fomartStr); | |||||
| String timeStr = dateFormatter.format(date.getTime()); | |||||
| return timeStr; | |||||
| } | |||||
| public static Calendar string2Date(String timeStr) { | |||||
| SimpleDateFormat dateFormatter = new SimpleDateFormat( | |||||
| "yyyy-MM-dd HH:mm:ss"); | |||||
| Calendar calendar = Calendar.getInstance(); | |||||
| try { | |||||
| Date date = dateFormatter.parse(timeStr); | |||||
| calendar.setTime(date); | |||||
| } catch (Exception e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| return calendar; | |||||
| } | |||||
| /*** | |||||
| * String转换为Calendar | |||||
| * | |||||
| * @param timeStr | |||||
| * 时间字符串 | |||||
| * @param formaStr | |||||
| * 匹配格式 | |||||
| * @return | |||||
| */ | |||||
| public static Calendar strToDate(String timeStr, String formaStr) { | |||||
| SimpleDateFormat dateFormatter = new SimpleDateFormat(formaStr); | |||||
| Calendar calendar = Calendar.getInstance(); | |||||
| try { | |||||
| Date date = dateFormatter.parse(timeStr); | |||||
| calendar.setTime(date); | |||||
| } catch (Exception e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| return calendar; | |||||
| } | |||||
| public static Date stringToDate(String timeStr) { | |||||
| SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd"); | |||||
| Date date = null; | |||||
| try { | |||||
| date = dateFormatter.parse(timeStr); | |||||
| } catch (ParseException e) { | |||||
| // TODO Auto-generated catch block | |||||
| e.printStackTrace(); | |||||
| } | |||||
| return date; | |||||
| } | |||||
| public static Date stringToDate(String timeStr,String formaStr) { | |||||
| SimpleDateFormat dateFormatter = new SimpleDateFormat(formaStr); | |||||
| Date date = null; | |||||
| try { | |||||
| date = dateFormatter.parse(timeStr); | |||||
| } catch (ParseException e) { | |||||
| // TODO Auto-generated catch block | |||||
| e.printStackTrace(); | |||||
| } | |||||
| return date; | |||||
| } | |||||
| /** | |||||
| * 获得当前时间的前3天 | |||||
| * | |||||
| */ | |||||
| public static String getTimeBefore3() { | |||||
| Date myDate = new Date(); | |||||
| SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); | |||||
| long myTime = (myDate.getTime() / 1000) - 60 * 60 * 24 * 3; | |||||
| myDate.setTime(myTime * 1000); | |||||
| String mDate = formatter.format(myDate); | |||||
| return mDate; | |||||
| } | |||||
| /** | |||||
| * 获得当前时间前几天 | |||||
| * | |||||
| * @param days | |||||
| * 前几天 | |||||
| * @return | |||||
| */ | |||||
| public static String getTimeBefore(int days, Date myDate) { | |||||
| Date testDate = myDate; | |||||
| SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); | |||||
| long myTime = (testDate.getTime() / 1000) - 60 * 60 * 24 * days; | |||||
| testDate.setTime(myTime * 1000); | |||||
| String mDate = formatter.format(testDate); | |||||
| return mDate; | |||||
| } | |||||
| /** | |||||
| * 获得当前时间前几天 | |||||
| * | |||||
| * @param days | |||||
| * 前几天 | |||||
| * @return | |||||
| */ | |||||
| public static String getTimeBefore(int days, Date myDate,String format) { | |||||
| Date testDate = myDate; | |||||
| SimpleDateFormat formatter = new SimpleDateFormat(format); | |||||
| long myTime = (testDate.getTime() / 1000) - 60 * 60 * 24 * days; | |||||
| testDate.setTime(myTime * 1000); | |||||
| String mDate = formatter.format(testDate); | |||||
| return mDate; | |||||
| } | |||||
| /** | |||||
| * 获得当前时间前几小时的时间 | |||||
| * | |||||
| * @param hour | |||||
| * 前几小时 | |||||
| * @return | |||||
| */ | |||||
| public static String getHourTimeBefore(int hour, Date myDate) { | |||||
| Date testDate = myDate; | |||||
| SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | |||||
| long myTime = (testDate.getTime() / 1000) - 60 * 60 * hour; | |||||
| testDate.setTime(myTime * 1000); | |||||
| String mDate = formatter.format(testDate); | |||||
| return mDate; | |||||
| } | |||||
| /** | |||||
| * 获得指定时间前几天,格式yyyy-MM-dd | |||||
| * | |||||
| * @param days | |||||
| * 前几天 | |||||
| * @return | |||||
| */ | |||||
| public static String getTimeBefore(int days, String date) { | |||||
| Date myDate = null; | |||||
| SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); | |||||
| try { | |||||
| myDate = formatter.parse(date); | |||||
| } catch (ParseException e) { | |||||
| // TODO Auto-generated catch block | |||||
| e.printStackTrace(); | |||||
| } | |||||
| if (myDate != null) { | |||||
| long myTime = (myDate.getTime() / 1000) - 60 * 60 * 24 * days; | |||||
| myDate.setTime(myTime * 1000); | |||||
| String mDate = formatter.format(myDate); | |||||
| return mDate; | |||||
| } | |||||
| return null; | |||||
| } | |||||
| public static String getTimeBeforeByFormat(int days, String date, | |||||
| String format) { | |||||
| Date myDate = null; | |||||
| SimpleDateFormat formatter = new SimpleDateFormat(format); | |||||
| try { | |||||
| myDate = formatter.parse(date); | |||||
| } catch (ParseException e) { | |||||
| // TODO Auto-generated catch block | |||||
| e.printStackTrace(); | |||||
| } | |||||
| if (myDate != null) { | |||||
| long myTime = (myDate.getTime() / 1000) - 60 * 60 * 24 * days; | |||||
| myDate.setTime(myTime * 1000); | |||||
| String mDate = formatter.format(myDate); | |||||
| return mDate; | |||||
| } | |||||
| return null; | |||||
| } | |||||
| /** | |||||
| * XMLGregorianCalendar转String | |||||
| * | |||||
| * @param cal | |||||
| * @return | |||||
| */ | |||||
| public static String xMLGregorianCalendar2String(XMLGregorianCalendar cal) { | |||||
| if (null != cal) { | |||||
| Calendar calendar = cal.toGregorianCalendar(); | |||||
| String result = date2String(calendar); | |||||
| return result; | |||||
| } else { | |||||
| return null; | |||||
| } | |||||
| } | |||||
| /** | |||||
| * 字符串转为Calendar | |||||
| * | |||||
| * @param timeStr | |||||
| * 时间字符串格式为yyyy-MM-dd | |||||
| * @return | |||||
| */ | |||||
| public static Calendar str2Date(String timeStr) { | |||||
| SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd"); | |||||
| Calendar calendar = Calendar.getInstance(); | |||||
| try { | |||||
| Date date = dateFormatter.parse(timeStr); | |||||
| calendar.setTime(date); | |||||
| } catch (Exception e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| return calendar; | |||||
| } | |||||
| /** | |||||
| * java.util.Date转java.sql.date | |||||
| */ | |||||
| public static Timestamp utilDate2SqlDate(Date utildate) { | |||||
| SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"); | |||||
| formatter.format(utildate); | |||||
| java.sql.Date sqldate = new java.sql.Date(utildate.getTime()); | |||||
| Timestamp result = new Timestamp(sqldate.getTime()); | |||||
| return result; | |||||
| } | |||||
| public static List<String> getTjTimeList(String str_startTime, | |||||
| String str_endTime, String type) { | |||||
| List<String> listTjTime = new ArrayList<String>(); | |||||
| // 按日统计 | |||||
| if ("0".equals(type)) { | |||||
| int startYear = Integer.parseInt(str_startTime.substring(0, 4)); | |||||
| int endYear = Integer.parseInt(str_endTime.substring(0, 4)); | |||||
| int startMonth = Integer.parseInt(str_startTime.substring(5, 7)); | |||||
| int endMonth = Integer.parseInt(str_endTime.substring(5, 7)); | |||||
| int startDay = Integer.parseInt(str_startTime.substring(8)); | |||||
| int endDay = Integer.parseInt(str_endTime.substring(8)); | |||||
| // 开始时间 | |||||
| Calendar start = Calendar.getInstance(); | |||||
| start.set(startYear, startMonth - 1, startDay); | |||||
| // 结束时间 | |||||
| Calendar end = Calendar.getInstance(); | |||||
| end.set(endYear, endMonth - 1, endDay); | |||||
| // 日间隔数 | |||||
| long rjg = (end.getTimeInMillis() - start.getTimeInMillis()) | |||||
| / (1000 * 24 * 60 * 60); | |||||
| for (int i = 0; i <= rjg; i++) { | |||||
| if (i != 0) { | |||||
| startDay++; | |||||
| } | |||||
| switch (startMonth) { | |||||
| case 2: | |||||
| // 如果是闰年 | |||||
| if (startYear % 4 == 0 && startYear % 100 != 0 | |||||
| || startYear % 400 == 0) { | |||||
| if (startDay > 29) { | |||||
| startMonth++; | |||||
| startDay -= 29; | |||||
| } | |||||
| } else { | |||||
| if (startDay > 28) { | |||||
| startMonth++; | |||||
| startDay -= 28; | |||||
| } | |||||
| } | |||||
| // listTjTime.add(startYear+"-0"+startMonth+"-"+(startDay>9?startDay:"0"+startDay)); | |||||
| break; | |||||
| case 4: | |||||
| if (startDay > 30) { | |||||
| startMonth++; | |||||
| startDay -= 30; | |||||
| } | |||||
| // listTjTime.add(startYear+"-0"+startMonth+"-"+(startDay>9?startDay:"0"+startDay)); | |||||
| break; | |||||
| case 6: | |||||
| if (startDay > 30) { | |||||
| startMonth++; | |||||
| startDay -= 30; | |||||
| } | |||||
| // listTjTime.add(startYear+"-0"+startMonth+"-"+(startDay>9?startDay:"0"+startDay)); | |||||
| break; | |||||
| case 9: | |||||
| if (startDay > 30) { | |||||
| startMonth++; | |||||
| startDay -= 30; | |||||
| listTjTime.add(startYear + "-" + startMonth + "-0" | |||||
| + startDay); | |||||
| } else { | |||||
| // listTjTime.add(startYear+"-0"+startMonth+"-"+(startDay>9?startDay:"0"+startDay)); | |||||
| } | |||||
| break; | |||||
| case 11: | |||||
| if (startDay > 30) { | |||||
| startMonth++; | |||||
| startDay -= 30; | |||||
| } else { | |||||
| // listTjTime.add(startYear+"-"+startMonth+"-"+(startDay>9?startDay:"0"+startDay)); | |||||
| } | |||||
| break; | |||||
| case 12: | |||||
| if (startDay > 31) { | |||||
| startYear++; | |||||
| startMonth = 1; | |||||
| startDay -= 31; | |||||
| } | |||||
| // listTjTime.add(startYear+"-"+(startMonth>9?startMonth:"0"+startMonth)+"-"+(startDay>9?startDay:"0"+startDay)); | |||||
| break; | |||||
| default: | |||||
| if (startDay > 31) { | |||||
| startMonth++; | |||||
| startDay -= 31; | |||||
| } | |||||
| // listTjTime.add(startYear+"-"+(startMonth>9?startMonth:"0"+startMonth)+"-"+(startDay>9?startDay:"0"+startDay)); | |||||
| break; | |||||
| } | |||||
| listTjTime.add(startYear + "-" | |||||
| + (startMonth > 9 ? startMonth : "0" + startMonth) | |||||
| + "-" + (startDay > 9 ? startDay : "0" + startDay)); | |||||
| } | |||||
| } | |||||
| // 按月统计 | |||||
| if ("1".equals(type)) { | |||||
| // 开始年 | |||||
| int startYear = Integer.parseInt(str_startTime.substring(0, 4)); | |||||
| // 结束年 | |||||
| int endYear = Integer.parseInt(str_endTime.substring(0, 4)); | |||||
| // 开始月 | |||||
| int startMonth = Integer.parseInt(str_startTime.substring(5)); | |||||
| // 结束月 | |||||
| int endMonth = Integer.parseInt(str_endTime.substring(5)); | |||||
| // 如果是同一年的 | |||||
| if (startYear == endYear) { | |||||
| // 循环将从开始到结束的所有日期放到list中 | |||||
| for (int i = 0; i <= endMonth - startMonth; i++) { | |||||
| if ((startMonth + i) >= 10) { | |||||
| listTjTime.add(startYear + "-" + (startMonth + i)); | |||||
| } else { | |||||
| listTjTime.add(startYear + "-0" + (startMonth + i)); | |||||
| } | |||||
| } | |||||
| return listTjTime; | |||||
| } else { | |||||
| // 年跨度差值 | |||||
| int ncz = endYear - startYear; | |||||
| // 通过循环先将开始那一年的日期加到list中 | |||||
| for (int i = 0; i <= 12 - startMonth; i++) { | |||||
| if ((startMonth + i) >= 10) { | |||||
| listTjTime.add(startYear + "-" + (startMonth + i)); | |||||
| } else { | |||||
| listTjTime.add(startYear + "-0" + (startMonth + i)); | |||||
| } | |||||
| } | |||||
| // 如果年跨度大于1 | |||||
| if (ncz > 1) { | |||||
| // 循环开始和结束中间的年数 | |||||
| for (int i = 1; i < ncz; i++) { | |||||
| // 循环12次,将一年的时间加到list | |||||
| for (int j = 1; j <= 12; j++) { | |||||
| if (j >= 10) { | |||||
| listTjTime.add((startYear + i) + "-" + j); | |||||
| } else { | |||||
| listTjTime.add((startYear + i) + "-0" + j); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| // 通过循环将结束那一年的日期加到list中 | |||||
| for (int i = 1; i <= endMonth; i++) { | |||||
| if (i >= 10) { | |||||
| listTjTime.add(endYear + "-" + i); | |||||
| } else { | |||||
| listTjTime.add(endYear + "-0" + i); | |||||
| } | |||||
| } | |||||
| return listTjTime; | |||||
| } | |||||
| } | |||||
| // 按年统计 | |||||
| if ("2".equals(type)) { | |||||
| int startYear = Integer.parseInt(str_startTime.substring(0, 4)); | |||||
| int endYear = Integer.parseInt(str_endTime.substring(0, 4)); | |||||
| for (int i = 0; i <= endYear - startYear; i++) { | |||||
| listTjTime.add(startYear + i + ""); | |||||
| } | |||||
| return listTjTime; | |||||
| } | |||||
| return listTjTime; | |||||
| } | |||||
| /** | |||||
| * 获取当前天数是当年的第几天 | |||||
| * | |||||
| * @return | |||||
| */ | |||||
| public static String getCurrentDaysofYear() { | |||||
| SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); | |||||
| String currentDay = format.format(new Date()); | |||||
| return getDayIndexofYear(currentDay); | |||||
| } | |||||
| /** | |||||
| * 判断是否为闰年 | |||||
| * | |||||
| * @param year | |||||
| * @return | |||||
| */ | |||||
| public static boolean isLeapYear(int year) { | |||||
| // 判断是不是闰年 | |||||
| if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) { | |||||
| return true; | |||||
| } | |||||
| return false; | |||||
| } | |||||
| /** | |||||
| * 获得当月的天数 | |||||
| * | |||||
| * @param month | |||||
| * 月份 | |||||
| * @param isLeapYear | |||||
| * 是否为闰年 | |||||
| * @return | |||||
| */ | |||||
| public static int getDayofMonth(int month, boolean isLeapYear) { | |||||
| // 非闰年 | |||||
| final int[] normal = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; | |||||
| // 闰年 | |||||
| final int[] leapYear = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; | |||||
| if (month != 0 && !isLeapYear) { | |||||
| return normal[month - 1]; | |||||
| } | |||||
| if (month != 0 && isLeapYear) { | |||||
| return leapYear[month - 1]; | |||||
| } | |||||
| return 0; | |||||
| } | |||||
| public static int getDayofYear(int year) { | |||||
| if (isLeapYear(year)) | |||||
| return 366; | |||||
| return 365; | |||||
| } | |||||
| /** | |||||
| * 根据日期获取日期在当年中的天数 | |||||
| * | |||||
| * @param date | |||||
| * @return | |||||
| */ | |||||
| public static String getDayIndexofYear(String date) { | |||||
| int year = 0; | |||||
| int month = 0; | |||||
| int day = 0; | |||||
| String strIndex = ""; | |||||
| boolean isLeapYear = false; | |||||
| int index = 0; | |||||
| if (date != null) { | |||||
| String[] timeArray = date.split("-"); | |||||
| if (timeArray != null && timeArray.length > 0) { | |||||
| year = Integer.valueOf(timeArray[0]); | |||||
| month = Integer.valueOf(timeArray[1]); | |||||
| day = Integer.valueOf(timeArray[2]); | |||||
| isLeapYear = isLeapYear(year); | |||||
| for (int i = 1; i < month; i++) { | |||||
| index += getDayofMonth(i, isLeapYear); | |||||
| } | |||||
| index += day; | |||||
| if (index < 10) { | |||||
| strIndex = "00" + String.valueOf(index); | |||||
| } else if (index < 100 && index >= 10) { | |||||
| strIndex = "0" + String.valueOf(index); | |||||
| } else { | |||||
| strIndex = index + ""; | |||||
| } | |||||
| return strIndex; | |||||
| } | |||||
| } | |||||
| return strIndex; | |||||
| } | |||||
| /** | |||||
| * 获取当前时间,以分钟计算 | |||||
| * | |||||
| * @return | |||||
| */ | |||||
| private int index = 0; | |||||
| public static Date getMondayOfThisWeek() { | |||||
| Calendar c = Calendar.getInstance(); | |||||
| int day_of_week = c.get(Calendar.DAY_OF_WEEK) - 1; | |||||
| if (day_of_week == 0) | |||||
| day_of_week = 7; | |||||
| c.add(Calendar.DATE, -day_of_week + 1); | |||||
| return c.getTime(); | |||||
| } | |||||
| public int getIndex() { | |||||
| return index; | |||||
| } | |||||
| public void setIndex(int index) { | |||||
| this.index = index; | |||||
| } | |||||
| public static String getMintuesFromRoot() { | |||||
| Calendar cal = Calendar.getInstance(); | |||||
| cal.setTime(new Date()); | |||||
| int year = cal.get(Calendar.YEAR); | |||||
| int day = 0; | |||||
| int hours = cal.get(Calendar.HOUR_OF_DAY); | |||||
| int minutes = cal.get(Calendar.MINUTE); | |||||
| int seconds = cal.get(Calendar.SECOND); | |||||
| if (year > 2020) | |||||
| TIME_ROOT = 2020; | |||||
| for (int i = TIME_ROOT; i < year; i++) { | |||||
| day += getDayofYear(i); | |||||
| } | |||||
| day += Integer.valueOf(getCurrentDaysofYear()); | |||||
| minutes = day * hours * minutes; | |||||
| String mins = String.valueOf(minutes); | |||||
| String sec = String.valueOf(seconds); | |||||
| switch (mins.length()) { | |||||
| case 4: | |||||
| mins = "0".concat(mins); | |||||
| case 5: | |||||
| mins = "0".concat(mins); | |||||
| case 6: | |||||
| mins = mins.concat(sec.substring(sec.length() - 1, sec.length())); | |||||
| } | |||||
| return mins; | |||||
| } | |||||
| /** | |||||
| * 获得一个时间的前段时间 | |||||
| * | |||||
| * @param days | |||||
| * 跨度 | |||||
| * @param date | |||||
| * 当前时间 yyyy-MM-dd/yyyy-MM/yyyy | |||||
| * @param type | |||||
| * 类型(0日,1月,2年) | |||||
| * @return | |||||
| */ | |||||
| public static String getTimeBefore(int days, String date, String type) { | |||||
| if ("0".equals(type)) { | |||||
| Date myDate = null; | |||||
| SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); | |||||
| try { | |||||
| myDate = formatter.parse(date); | |||||
| } catch (ParseException e) { | |||||
| // TODO Auto-generated catch block | |||||
| e.printStackTrace(); | |||||
| } | |||||
| if (myDate != null) { | |||||
| long myTime = (myDate.getTime() / 1000) - 60 * 60 * 24 * days; | |||||
| myDate.setTime(myTime * 1000); | |||||
| String mDate = formatter.format(myDate); | |||||
| return mDate; | |||||
| } | |||||
| } | |||||
| if ("1".equals(type)) { | |||||
| try { | |||||
| int month = Integer.valueOf(date.substring(5, 7)); | |||||
| int year = Integer.valueOf(date.substring(0, 4)); | |||||
| if (days - month > 0) { | |||||
| // 年跨度 | |||||
| int step = (days - month) / 12 + 1; | |||||
| // 除去整年后的余月 | |||||
| int m = (days - month) % 12; | |||||
| year = year - step; | |||||
| month = 12 - m; | |||||
| } else { | |||||
| month = month - days; | |||||
| } | |||||
| String newDate = year + "-" + (month > 9 ? month : "0" + month); | |||||
| return newDate; | |||||
| } catch (NumberFormatException e) { | |||||
| // TODO Auto-generated catch block | |||||
| e.printStackTrace(); | |||||
| } | |||||
| } | |||||
| if ("2".equals(type)) { | |||||
| int year = Integer.valueOf(date.substring(0, 4)); | |||||
| String newDate = (year - days) + ""; | |||||
| return newDate; | |||||
| } | |||||
| return ""; | |||||
| } | |||||
| public static Calendar string2Date(String timeStr, String format) { | |||||
| SimpleDateFormat dateFormatter = new SimpleDateFormat(format); | |||||
| Calendar calendar = Calendar.getInstance(); | |||||
| try { | |||||
| Date date = dateFormatter.parse(timeStr); | |||||
| calendar.setTime(date); | |||||
| } catch (Exception e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| return calendar; | |||||
| } | |||||
| public static boolean isValidDate(String str) { | |||||
| boolean convertSuccess = true; | |||||
| SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); | |||||
| try { | |||||
| format.setLenient(false); | |||||
| format.parse(str); | |||||
| } catch (ParseException e) { | |||||
| // e.printStackTrace(); | |||||
| // 如果throw java.text.ParseException或者NullPointerException,就说明格式不对 | |||||
| convertSuccess = false; | |||||
| } | |||||
| return convertSuccess; | |||||
| } | |||||
| public static String getTimeAfter(int days, Date myDate) { | |||||
| SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); | |||||
| Calendar now = Calendar.getInstance(); | |||||
| now.setTime(myDate); | |||||
| now.set(Calendar.DATE, now.get(Calendar.DATE) + days); | |||||
| String mDate = formatter.format(now.getTime()); | |||||
| return mDate; | |||||
| } | |||||
| public static String getMonthStr(int month) { | |||||
| if (month < 10) { | |||||
| return "0" + String.valueOf(month); | |||||
| } else { | |||||
| return String.valueOf(month); | |||||
| } | |||||
| } | |||||
| } | |||||