时间处理工具类TimeUtil

package com.util;import java.io.FileWriter;import java.io.PrintWriter;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.Vector;/** * 此类主要用来取得本地系统的系统时间并用下面5种格式显示 1. YYMMDDHH 8位 2. YYMMDDHHmm 10位 3. YYMMDDHHmmss * 12位 4. YYYYMMDDHHmmss 14位 5. YYMMDDHHmmssxxx 15位 (最后的xxx 是毫秒) */public class TimeUtil {public static final int YYYYMMDDhhmmssxxx = 17;public static final int YYMMDDhhmmssxxx = 15;public static final int YYYYMMDDhhmmss = 14;public static final int YYMMDDhhmmss = 12;public static final int YYMMDDhhmm = 10;public static final int YYMMDDhh = 8;public void test() {try {PrintWriter bb = new PrintWriter(new FileWriter("test2.txt", true), true);bb.close();}catch (Exception ex) {}}/** * */public static String getTime(int format, int years) {StringBuffer cTime = new StringBuffer(15);Calendar time = Calendar.getInstance();int miltime = time.get(Calendar.MILLISECOND);int second = time.get(Calendar.SECOND);int minute = time.get(Calendar.MINUTE);int hour = time.get(Calendar.HOUR_OF_DAY);int day = time.get(Calendar.DAY_OF_MONTH);int month = time.get(Calendar.MONTH) + 1;int year = -1;if (years != 0)year = years;elseyear = time.get(Calendar.YEAR);time = null;if (format != 14 && format != 17) {if (year >= 2000)year = year - 2000;elseyear = year - 1900;}if (format >= 2) {if (format == 14 || format == 17)cTime.append(year);elsecTime.append(getFormatTime(year, 2));}if (format >= 4)cTime.append(getFormatTime(month, 2));if (format >= 6)cTime.append(getFormatTime(day, 2));if (format >= 8)cTime.append(getFormatTime(hour, 2));if (format >= 10)cTime.append(getFormatTime(minute, 2));if (format >= 12)cTime.append(getFormatTime(second, 2));if (format >= 15)cTime.append(getFormatTime(miltime, 3));return cTime.toString().trim();}/** * 格式化年月日,时分秒的值为参数hhmmss的值(格式为YYYYMMDDhhmmss) * * @param format * @param hhmmss * @return */public static String getStartTimeOfDay(String hhmmss) {StringBuffer cTime = new StringBuffer(14);Calendar time = Calendar.getInstance();int day = time.get(Calendar.DAY_OF_MONTH);int month = time.get(Calendar.MONTH) + 1;int year = time.get(Calendar.YEAR);time = null;cTime.append(year);cTime.append(getFormatTime(month, 2));cTime.append(getFormatTime(day, 2));cTime.append(hhmmss);return cTime.toString().trim();}/** * 取得本地系统的时间,时间格式由参数决定 * * @param format * 时间格式由常量决定 * @return String 具有format格式的字符串 */public static String getTime(int format) {return getTime(format, 0);}/** * 产生任意位的字符串 * * @param time * int 要转换格式的时间 * @param format * int 转换的格式 * @return String 转换的时间 */public synchronized static String getYearAdd(int format, int iyear) {StringBuffer cTime = new StringBuffer(10);Calendar time = Calendar.getInstance();time.add(Calendar.YEAR, iyear);int miltime = time.get(Calendar.MILLISECOND);int second = time.get(Calendar.SECOND);int minute = time.get(Calendar.MINUTE);int hour = time.get(Calendar.HOUR_OF_DAY);int day = time.get(Calendar.DAY_OF_MONTH);int month = time.get(Calendar.MONTH) + 1;int year = time.get(Calendar.YEAR);if (format != 14) {if (year >= 2000)year = year - 2000;elseyear = year - 1900;}if (format >= 2) {if (format == 14)cTime.append(year);elsecTime.append(getFormatTime(year, 2));}if (format >= 4)cTime.append(getFormatTime(month, 2));if (format >= 6)cTime.append(getFormatTime(day, 2));if (format >= 8)cTime.append(getFormatTime(hour, 2));if (format >= 10)cTime.append(getFormatTime(minute, 2));if (format >= 12)cTime.append(getFormatTime(second, 2));if (format >= 15)cTime.append(getFormatTime(miltime, 3));return cTime.toString();}private static String getFormatTime(int time, int format) {StringBuffer numm = new StringBuffer(format);int length = String.valueOf(time).length();if (format < length)return null;for (int i = 0; i < format - length; i++) {numm.append("0");}numm.append(time);return numm.toString().trim();}/* * #本函数主要作用是返回当前年份 #len 返回位数,2位 4位 */public static String getYear(int len) {Calendar time = Calendar.getInstance();int year = time.get(Calendar.YEAR);String djyear = Integer.toString(year);if (len == 2) {djyear = djyear.substring(2);}return djyear;}/* * #本函数作用是返回当前月份(2位) */public static String getMonth() {Calendar time = Calendar.getInstance();int month = time.get(Calendar.MONTH) + 1;String djmonth = "";if (month < 10) {djmonth = "0" + Integer.toString(month);} else {djmonth = Integer.toString(month);}return djmonth;}/* * #本函数主要作用是返回当前天数 */public static String getDay() {Calendar time = Calendar.getInstance();int day = time.get(Calendar.DAY_OF_MONTH);String djday = "";if (day < 10) {djday = "0" + Integer.toString(day);} else {djday = Integer.toString(day);}return djday;}/* * 本函数作用是返回当前小时 */public static String getHour() {Calendar time = Calendar.getInstance();int hour = time.get(Calendar.HOUR_OF_DAY);String djhour = "";if (hour < 10) {djhour = "0" + Integer.toString(hour);} else {djhour = Integer.toString(hour);}return djhour;}/* * #本函数作用是返回当前分钟 */public static String getMin() {Calendar time = Calendar.getInstance();int min = time.get(Calendar.MINUTE);String djmin = "";if (min < 10) {djmin = "0" + Integer.toString(min);} else {djmin = Integer.toString(min);}return djmin;}/* * #本函数的主要功能是格式化时间,以便于页面显示 #time 时间 可为6位、8位、12位、15位 #return 返回格式化后的时间 #6位 * YY年MM月DD日 #8位 YYYY年MM月DD日 #12位 YY年MM月DD日 HH:II:SS #15位 YY年MM月DD日 * HH:II:SS:CCC */public static String formattime(String time) {int length = 0;if (time == null || time.length() < 6) {return "";}length = time.length();String renstr = "";switch (length) {case 6:renstr = time.substring(0, 2) + "-" + time.substring(2, 4) + "-" + time.substring(4) + "";break;case 8:renstr = time.substring(0, 4) + "-" + time.substring(4, 6) + "-" + time.substring(6, 8) + "";break;case 12:renstr = time.substring(0, 4) + "-" + time.substring(4, 6) + "-" + time.substring(6, 8) + " " + time.substring(8, 10) + ":" + time.substring(10, 12);break;case 14:renstr = time.substring(0, 4) + "-" + time.substring(4, 6) + "-" + time.substring(6, 8) + " " + time.substring(8, 10) + ":" + time.substring(10, 12) + ":" + time.substring(12, 14) + "";break;case 15:renstr = time.substring(0, 2) + "-" + time.substring(2, 4) + "-" + time.substring(4, 6) + " " + time.substring(6, 8) + ":" + time.substring(8, 10) + ":" + time.substring(10, 12) + ":" + time.substring(12);break;default:renstr = time.substring(0, 2) + "-" + time.substring(2, 4) + "-" + time.substring(4) + "";break;}return renstr;}/* * #本函数的主要功能是格式化时间,以便于页面显示 #time 时间 可为6位、8位、12位、15位 #return 返回格式化后的时间 #6位 * YY年MM月DD日 #8位 YYYY年MM月DD日 #12位 YY年MM月DD日 HH:II:SS #15位 YY年MM月DD日 * HH:II:SS:CCC */public static String formattime(String time, String split) {int length = 0;if (time == null || time.length() < 6) {return "";}length = time.length();String renstr = "";switch (length) {case 6:renstr = time.substring(0, 2) + split + time.substring(2, 4) + split + time.substring(4) + "";break;case 8:renstr = time.substring(0, 4) + split + time.substring(4, 6) + split + time.substring(6, 8) + "";break;case 12:renstr = time.substring(0, 4) + split + time.substring(4, 6) + split + time.substring(6, 8) + " " + time.substring(8, 10) + ":" + time.substring(10, 12);break;case 14:renstr = time.substring(0, 4) + split + time.substring(4, 6) + split + time.substring(6, 8) + " " + time.substring(8, 10) + ":" + time.substring(10, 12) + ":" + time.substring(12, 14) + "";break;case 15:renstr = time.substring(0, 2) + split + time.substring(2, 4) + split + time.substring(4, 6) + " " + time.substring(6, 8) + ":" + time.substring(8, 10) + ":" + time.substring(10, 12) + ":" + time.substring(12);break;default:renstr = time.substring(0, 2) + split + time.substring(2, 4) + split + time.substring(4) + "";break;}return renstr;}/** * 根据系统时间得到n天以后的日期 * * @param int n 天数 * @return String 得到的时间 YYYYMMDD */public static String getNDayLater(int n) {String time = null;String dayStr = null;String monthStr = null;String yearStr = null;java.util.Calendar cal = java.util.Calendar.getInstance();cal.add(java.util.Calendar.DAY_OF_MONTH, n);int day = cal.get(java.util.Calendar.DATE);int month = cal.get(java.util.Calendar.MONTH) + 1;int year = cal.get(java.util.Calendar.YEAR);if (day < 10)dayStr = "0" + Integer.toString(day);elsedayStr = Integer.toString(day);if (month < 10)monthStr = "0" + Integer.toString(month);elsemonthStr = Integer.toString(month);yearStr = Integer.toString(year);time = yearStr.substring(2) + monthStr + dayStr;dayStr = null;monthStr = null;yearStr = null;return time;}/** * 返回给定时间内按周(周一至周日为一个单位)划分得到的时间数组 * * @param stime * String YYYYMMDD * @param etime * String YYYYMMDD * @return Vector */@SuppressWarnings("unchecked")public static Vector getWeekArray(String stime, String etime) {if (stime == null || stime.equals("") || etime == null || etime.equals("") || stime.length() < 8 || etime.length() < 8 || stime.compareTo(etime) > 0) {return null;}Vector v = new Vector();String[] s = null;if (stime.equals(etime)) {s = new String[2];s[0] = stime;s[1] = etime;v.add(s);} else {int year = 0;int month = 0;int date = 0;year = Integer.parseInt(stime.substring(0, 4));month = Integer.parseInt(stime.substring(4, 6));date = Integer.parseInt(stime.substring(6, 8));Calendar c = Calendar.getInstance();c.set(year, month - 1, date);int week = c.get(Calendar.DAY_OF_WEEK);int temp = 0;int i = 0;if (week != 2) {i++;s = new String[2];if (week == 1) {temp = 0;} else {temp = 8 - week;}s = new String[2];year = c.get(Calendar.YEAR);month = c.get(Calendar.MONTH) + 1;date = c.get(Calendar.DATE);s[0] = year + Common.get00String(month) + Common.get00String(date);c.add(Calendar.DAY_OF_MONTH, temp);year = c.get(Calendar.YEAR);month = c.get(Calendar.MONTH) + 1;date = c.get(Calendar.DATE);s[1] = year + Common.get00String(month) + Common.get00String(date);v.add(s);c.add(Calendar.DAY_OF_MONTH, 1);stime = year + Common.get00String(month) + Common.get00String(date);}while (!stime.equals(etime)) {i++;s = new String[2];year = c.get(Calendar.YEAR);month = c.get(Calendar.MONTH) + 1;date = c.get(Calendar.DATE);s[0] = year + Common.get00String(month) + Common.get00String(date);c.add(Calendar.DAY_OF_MONTH, 6);year = c.get(Calendar.YEAR);month = c.get(Calendar.MONTH) + 1;date = c.get(Calendar.DATE);s[1] = year + Common.get00String(month) + Common.get00String(date);stime = year + Common.get00String(month) + Common.get00String(date);if (stime.compareTo(etime) > 0) {s[1] = etime;v.add(s);break;}v.add(s);c.add(Calendar.DAY_OF_MONTH, 1);stime = year + Common.get00String(month) + Common.get00String(date);}}return v;}/** * 将日期时间从一种格式转换为另一种格式 * * @param srcTime * 源串 * @param srcPattern * 源串格式 * @param destPattern * 目标串格式 * @return String 目标串 */public static String transDateTime(String srcTime, String srcPattern, String destPattern) {if (srcTime == null)return "";try {SimpleDateFormat fmt = new SimpleDateFormat();fmt.applyPattern(srcPattern);Date date = fmt.parse(srcTime);fmt.applyPattern(destPattern);return fmt.format(date);}catch (Exception exp) {}return srcTime;}/** * 将14位日期格式转换成yyyy-MM-dd HH:mm:ss格式 * * @param srcDate * String * @return String */public static String transDate(String srcDate) {if (srcDate != null) {if (srcDate.trim().length() == 14)return transDateTime(srcDate.trim(), "yyyyMMddHHmmss", "yyyy-MM-dd HH:mm:ss");if (srcDate.trim().length() <= 8)return transDateTime(srcDate.trim(), "yyyyMMdd", "yyyy-MM-dd");return "";} elsereturn "";}/** * */public static String getYTime(int years) {Date dd = new Date();SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");return df.format(dd);}public static String getToday() {Date dd = new Date();SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");return df.format(dd);}/** * 根据pattern日期格式将当天日期格式化 * * @param pattern * @return */public static String getToday(String pattern) {Date dd = new Date();SimpleDateFormat df = new SimpleDateFormat(pattern);return df.format(dd);}/* * #本函数的主要功能是格式化时间,以便于页面显示 #time 时间 可为6位、8位、12位、15位 #return 返回格式化后的时间 #6位 * YY年MM月DD日 #8位 YYYY年MM月DD日 #12位 YY年MM月DD日 HH:II:SS #15位 YY年MM月DD日 * HH:II:SS:CCC */public static String formattime2(String time) {int length = 0;if (time == null || time.length() < 6) {return "";}length = time.length();String renstr = "";switch (length) {case 6:renstr = time.substring(0, 4) + "年" + time.substring(4, 6) + "月";break;case 8:renstr = time.substring(0, 4) + "年" + time.substring(4, 6) + "月" + time.substring(6, 8) + "日";break;case 10:renstr = time.substring(0, 4) + "年" + time.substring(4, 6) + "月" + time.substring(6, 8) + "日" + time.substring(8, 10) + "时";break;case 12:renstr = time.substring(0, 4) + "-" + time.substring(4, 6) + "-" + time.substring(6, 8) + " " + time.substring(8, 10) + ":" + time.substring(10, 12);break;case 14:renstr = time.substring(0, 4) + "-" + time.substring(4, 6) + "-" + time.substring(6, 8) + " " + time.substring(8, 10) + ":" + time.substring(10, 12) + ":" + time.substring(12, 14) + "";break;}return renstr;}/** * 将js日历控件中的时间转换为数据库格式时间 例如:2006-09-22 -〉20060922 */public static String JsToDb(String time) {if (time == null)return "";int len = time.trim().length();switch (len) {case 10:time = time.substring(0, 4) + time.substring(5, 7) + time.substring(8);break;default:}return time;}/** * 将数据库格式时间转换为js日历空间中的时间格式 例如:20060922 -〉2006-09-22 */public static String DbToJs(String time) {if (time == null)return "";int len = time.trim().length();switch (len) {case 6:time = "20" + time.substring(0, 2) + "-" + time.substring(2, 4) + "-" + time.substring(4, 6);break;case 15:time = "20" + time.substring(0, 2) + "-" + time.substring(2, 4) + "-" + time.substring(4, 6);break;case 8:time = time.substring(0, 4) + "-" + time.substring(4, 6) + "-" + time.substring(6, 8);break;case 14:time = time.substring(0, 4) + "-" + time.substring(4, 6) + "-" + time.substring(6, 8);break;}return time;}/** * 转换日期 YYYY-MM-DD 到 YYYYMMDD * * @param date * @return */public static String tranDateToQuery(String date) {String[] d = Common.split(date, "-");return d[0] + d[1] + d[2];}/** * 转换日期 YYYY-MM-DD 到 YYYYMMDDhhmmss * * @param date * @return */public static String tranDateToSmil(String date) {return tranDateToQuery(date) + "000000";}/** * 转换日期 YYYYMMDD 到 YYYY-MM-DD * * @param date * @return */public static String tranDateToShow(String date) {return date.substring(0, 4) + "-" + date.substring(4, 6) + "-" + date.substring(6, 8);}/** * 给定开始时间,得到n天后的日期 * * @param s * @param n * @return * @throws ParseException */public static String addDay(String s, int n) {String retime = "";try {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Calendar cd = Calendar.getInstance();cd.setTime(sdf.parse(s));cd.add(Calendar.DATE, n);retime = sdf.format(cd.getTime());}catch (Exception e) {e.printStackTrace();}return retime;}/** * 给定开始时间,得到n天后的日期 * * @param s * @param n * @return * @throws ParseException */public static String addDay(String s, String format, int n) {String retime = "";try {SimpleDateFormat sdf = new SimpleDateFormat(format);Calendar cd = Calendar.getInstance();cd.setTime(sdf.parse(s));cd.add(Calendar.DATE, n);retime = sdf.format(cd.getTime());}catch (Exception e) {e.printStackTrace();}return retime;}/** * 转换时间 HHMMSS 到 HH:MM:SS * * @param date * @return */public static String tranHMSTimeToShow(String time) {if (time.length() < 6) {return time;} else {return time.substring(0, 2) + ":" + time.substring(2, 4) + ":" + time.substring(4, 6);}}/** * 转换时间 * * @param date * @return */public static String formatDate(Date d, String pattern) {return formatDate(d, pattern, "");}/** * 转换时间 * * @param date * @return */public static String formatDate(Date d, String pattern, String def) {if (d == null)return def;if (pattern == null || pattern.isEmpty())pattern = "yyyy-MM-dd";SimpleDateFormat sdf = new SimpleDateFormat(pattern);return sdf.format(d);}/** * 获得当前日期前n天的日期 * * @param days * 天数 * @return 当前日期前n天的日期(yyyy-MM-dd) */public static String getNDaybefore(int days) {Date today = new Date();long targetTime = (today.getTime() / 1000) - 60 * 60 * 24 * days;today.setTime(targetTime * 1000);return formatDate(today);}public static String formatDate(Date d) {return formatDate(d, "yyyy-MM-dd", "");}public static Date getDate(String date, String pattern, Date def) {if (date == null || date.isEmpty()) {return def;}Date d = def;SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");try {d = sdf.parse(date);}catch (ParseException e) {}return d;}/** * 获取当前月份的天数 * * @param date * (yyyyMM) * @return */public static int getMonthDays(String month) {try {SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");Calendar cal = Calendar.getInstance();cal.setTime(sdf.parse(month));return cal.getActualMaximum(Calendar.DATE);}catch (Exception e) {e.printStackTrace();}return 31;}/** * 获得指定日期前后N天的日期(取到日) * * @param date * 指定日期 * @param i * 前后天数,-表示前,+表示后 * @return */public static String getSimpleDate(String date, int i) {SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");java.util.Calendar cal = java.util.Calendar.getInstance();try {cal.setTime(df.parse(date));}catch (ParseException e) {e.printStackTrace();return "";}cal.add(java.util.Calendar.DATE, i);df = new SimpleDateFormat("dd");return df.format(cal.getTime());}/** * 获得指定日期当月的最后一天的日期字符 * * @param date * 指定日期 * @return */public static String getLastDateStrOfMonth(String date) {SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");java.util.Calendar cal = java.util.Calendar.getInstance();try {cal.setTime(df.parse(date));}catch (ParseException e) {e.printStackTrace();return "";}cal.add(Calendar.MONTH, 1);// 设为下个月cal.set(Calendar.DATE, 1);// 设为下个月1号cal.add(Calendar.DATE, -1);// 下一个月1号减一为本月最后一天df = new SimpleDateFormat("dd");return df.format(cal.getTime());}/** * 获得指定日期当月的最后一天的日期字符 * * @param date * @param pattern * @return */public static String getLastDateStrOfMonth(String date, String pattern) {SimpleDateFormat df = new SimpleDateFormat(pattern);java.util.Calendar cal = java.util.Calendar.getInstance();try {cal.setTime(df.parse(date));}catch (ParseException e) {e.printStackTrace();return "";}cal.add(Calendar.MONTH, 1);// 设为下个月cal.set(Calendar.DATE, 1);// 设为下个月1号cal.add(Calendar.DATE, -1);// 下一个月1号减一为本月最后一天df = new SimpleDateFormat("dd");return df.format(cal.getTime());}/** * 判断是否是本月最后一天 * * @param date * @return */public static boolean isLastDateOfMonth(String date) {boolean ret = false;String simpleDateStr = getSimpleDate(date, 0);String lastDateStr = getLastDateStrOfMonth(date);if (simpleDateStr != null && simpleDateStr.length() > 0 && simpleDateStr.equals(lastDateStr)) {ret = true;}return ret;}/** * 获得指定月份最后一天的日期 * * @param month * @return */public static String getLastDateFromMonth(String month) {SimpleDateFormat df = new SimpleDateFormat("yyyyMM");java.util.Calendar cal = java.util.Calendar.getInstance();try {cal.setTime(df.parse(month));}catch (ParseException e) {e.printStackTrace();return "";}cal.add(Calendar.MONTH, 1);// 设为下个月cal.set(Calendar.DATE, 1);// 设为下个月1号cal.add(Calendar.DATE, -1);// 下一个月1号减一为本月最后一天df = new SimpleDateFormat("yyyyMMdd");return df.format(cal.getTime());}/** * 获得指定月份最后一天的日期 * * @param dateStr * 日期(如20120805或201208) * @param pattern * 日期格式 * @param i * 前后月数,-表示前,+表示后(如0为本月,-1为上个月) * @return */public static String getLastDateFromDate(String dateStr, String pattern, int i) {SimpleDateFormat df = new SimpleDateFormat(pattern);java.util.Calendar cal = java.util.Calendar.getInstance();try {cal.setTime(df.parse(dateStr));}catch (ParseException e) {e.printStackTrace();return "";}cal.add(Calendar.MONTH, i + 1);// 设为下个月cal.set(Calendar.DATE, 1);// 设为下个月1号cal.add(Calendar.DATE, -1);// 下一个月1号减一为本月最后一天df = new SimpleDateFormat("yyyyMMdd");return df.format(cal.getTime());}/** * 获得指定日期前后N月的月份 * * @param date * 指定日期 * @param i * 前后月数,-表示前,+表示后 * @return */public static String getMonth(String date, int i) {SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");java.util.Calendar cal = java.util.Calendar.getInstance();try {cal.setTime(df.parse(date));}catch (ParseException e) {e.printStackTrace();return "";}cal.add(java.util.Calendar.MONTH, i);df = new SimpleDateFormat("yyyyMM");return df.format(cal.getTime());}/** * 获得指定日期前后N月的月份 * * @param date * 指定日期(如201206或20120615) * @param i * 前后月数,-表示前,+表示后 * @return */public static String getMonth(String month, int i, String pattern) {try {SimpleDateFormat sdf = new SimpleDateFormat(pattern);Calendar cal = Calendar.getInstance();cal.setTime(sdf.parse(month));cal.add(java.util.Calendar.MONTH, i);sdf = new SimpleDateFormat("yyyyMM");return sdf.format(cal.getTime());}catch (Exception e) {e.printStackTrace();}return month;}/** * 获得指定日期前后N年的年份 * * @param date * 指定日期 * @param i * 前后天数,-表示前,+表示后 * @return */public static String getYear(String date, int i) {SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");java.util.Calendar cal = java.util.Calendar.getInstance();try {cal.setTime(df.parse(date));}catch (ParseException e) {e.printStackTrace();return "";}cal.add(java.util.Calendar.YEAR, i);df = new SimpleDateFormat("yyyy");return df.format(cal.getTime());}/** * 获得指定日期前后N周的日期字符 * * @param date * 指定日期 * @param i * 前后天数,-表示前,+表示后 * @return */public static String getWeek(String date, int i) {return getDate(date, i * 7 - 6) + "-" + getDate(date, i * 7);}/** * 获得周报的周时间格式 * * @param date * 指定日期 * @return */public static String getWeekReportDateStr(String date) {return getDate(date, -6) + "-" + date;}/** * 获得制定日期前后N天的日期 * * @param date * 指定日期 * @param i * 前后天数,-表示前,+表示后 * @return */public static String getDate(String date, int i) {SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");java.util.Calendar cal = java.util.Calendar.getInstance();try {cal.setTime(df.parse(date));}catch (ParseException e) {e.printStackTrace();return "";}cal.add(java.util.Calendar.DATE, i);return df.format(cal.getTime());}/** * 判断是否是周日 * * @param date * @return */public static boolean isSunDay(String date) {boolean ret = false;SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");java.util.Calendar cal = java.util.Calendar.getInstance();try {cal.setTime(df.parse(date));if (cal.get(Calendar.DAY_OF_WEEK) == 1) {ret = true;}}catch (ParseException e) {e.printStackTrace();}return ret;}/** * 判断参数1日期是否是参数2指定的周时间一致 * * @param date * @param weekIndex * @return */public static boolean isSpecifiedDay(String date, int weekIndex) {boolean ret = false;SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");java.util.Calendar cal = java.util.Calendar.getInstance();try {cal.setTime(df.parse(date));if (cal.get(Calendar.DAY_OF_WEEK) == weekIndex) {ret = true;}}catch (ParseException e) {e.printStackTrace();}return ret;}/** * 获得今天前后N天的日期 * * @param date * 指定日期 * @param i * 前后天数,-表示前,+表示后 * @return */public static String getToDate(int i) {SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");java.util.Calendar cal = java.util.Calendar.getInstance();cal.add(java.util.Calendar.DATE, i);return df.format(cal.getTime());}/** * 2日期之间的天数 * * @param startDate * @param endDate * @return * @throws ParseException */public static long getDays(String startDate, String endDate) throws ParseException {long ret = 0;SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");Date date1 = df.parse(startDate);Date date2 = df.parse(endDate);long l = date2.getTime() - date1.getTime();ret = l / 1000 / 60 / 60 / 24;return ret + 1;}/** * 日期的月份 * * @param dateStr * @return * @throws ParseException */public static int getMonth(String dateStr) throws ParseException {int ret = 0;SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");Date date = df.parse(dateStr);java.util.Calendar cal = java.util.Calendar.getInstance();cal.setTime(date);return cal.get(java.util.Calendar.MONTH) + 1;}/** * 获取指定日期每周的开始时间 * * @param dateStr * 日期 * @return 周一 * @throws ParseException * 异常 */public static String getWeekStartDate(String dateStr) throws ParseException {SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");Date date = df.parse(dateStr);java.util.Calendar cal = java.util.Calendar.getInstance();cal.setTime(date);int weekday = cal.get(Calendar.DAY_OF_WEEK);// 周日if (weekday == 1) {weekday = -6;} else {weekday = 2 - weekday;}cal.add(Calendar.DATE, weekday);return df.format(cal.getTime());}/** * 获取指定日期的每周的结束时间 * * @param dateStr * 日期 * @return 周日 * @throws ParseException * 异常 */public static String getWeekEndDate(String dateStr) throws ParseException {SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");Date date = df.parse(dateStr);java.util.Calendar cal = java.util.Calendar.getInstance();cal.setTime(date);int weekday = cal.get(Calendar.DAY_OF_WEEK);// 周日if (weekday == 1) {weekday = -6;} else {weekday = 2 - weekday;}cal.add(Calendar.DATE, 6 + weekday);return df.format(cal.getTime());}public static void main(String[] args) throws Exception {String date = "201501081256";SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmm");java.util.Calendar cal = java.util.Calendar.getInstance();try {cal.setTime(df.parse(date));}catch (ParseException e) {e.printStackTrace();}cal.add(java.util.Calendar.MINUTE, 10);df = new SimpleDateFormat("yyyyMMddHHmm");System.out.println(df.format(cal.getTime()));}}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
获取当天日期 获取本周一日期 获取本周日的日期 获取上周一日期:" + tt.getPreviousWeekday("yyyy-MM-dd")); 获取上周日日期:" + tt.getPreviousWeekSunday("yyyy-MM-dd")); 获取上周一日期:" + tt.getWeekday(-1, "yyyy-MM-dd")); 获取上周日日期:" + tt.getWeekSunday(-1, "yyyy-MM-dd")); 获取下周一日期:" + tt.getNextMonday("yyyy-MM-dd")); 获取下周日日期:" + tt.getNextSunday("yyyy-MM-dd")); 获取本月第一天日期:" + tt.getFirstDayOfMonth()); 获取本月最后一天日期:" + tt.getDefaultDay()); 获取上月第一天日期:" + tt.getPreviousMonthFirst("yyyy-MM-dd")); 获取上月最后一天的日期:" + tt.getPreviousMonthEnd("yyyy-MM-dd")); 获取某月第一天日期:" + tt.getMonthFirst(0, "yyyy-MM-dd")); 获取某月最后一天的日期:" + tt.getMonthEnd(0, "yyyy-MM-dd")); 获取下月第一天日期:" + tt.getNextMonthFirst("yyyy-MM-dd")); 获取下月最后一天日期:" + tt.getNextMonthEnd("yyyy-MM-dd")); 获取本年的第一天日期:" + tt.getCurrentYearFirst()); 获取本年最后一天日期:" + tt.getCurrentYearEnd()); 获取去年的第一天日期:" + tt.getPreviousYearFirst()); 获取去年的最后一天日期:" + tt.getPreviousYearEnd()); 获取明年第一天日期:" + tt.getNextYearFirst()); 获取明年最后一天日期:" + tt.getNextYearEnd()); 获取本季度第一天:" + tt.getThisSeasonFirstTime(11)); 获取本季度最后一天:" + tt.getThisSeasonFinallyTime(11)); 获取两个日期之间间隔天数 获取当前月的第几周:" + tt.getWeekOfMonth()); 获取当前年份:" + tt.getYear()); 获取当前月份:" + tt.getMonth()); 获取今天在本年的第几天:" + tt.getDayOfYear()); 获得今天在本月的第几天(获得当前日):" + tt.getDayOfMonth()); 获得今天在本周的第几天:" + tt.getDayOfWeek()); 字符串转时间 获得一个日期所在周的星期几的日期
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值