package com.gm.utils; import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * <p> * Title: 开发工具 * </p> * <p> * Description: 时间工具类 * </p> * <p> * Copyright: Copyright (c) 2007 * </p> * <p> * Company: * </p> * * @version 1.0 */ public class DateUtil { public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss SSS"; public static final String DEFAULT_DATE_FORMAT2 = "yyyy-MM-dd HH:mm:ss"; public static final String DATETIME_FORMAT = "yyyyMMddHHmmssSSS"; public static final String DATE_FORMAT = "yyyy-MM-dd"; public static final String DATE_TYPE_DAY = "DAY"; public static final String DATE_TYPE_MONTH = "MONTH"; public static final String DATE_TYPE_YEAR = "YEAR"; public static final String DATE_TYPE_WEEK = "WEEK"; public static final String DATE_TYPE_HOUR = "HOUR"; public static final String DATE_TYPE_MINUTE = "MINUTE"; public static final String DATE_TYPE_SECOND = "SECOND"; public static final SimpleDateFormat SIMPLEDATEFORMAT = new SimpleDateFormat( DEFAULT_DATE_FORMAT2); public DateUtil() { } /** * 将Date转换为字符串 * * @param date * Date 要转换的日期 * @param dateFormatStr * String 要转换的日期类型 * @return String 返加String类型的日期 */ public static String DateToString(Date date, String dateFormatStr) { if (dateFormatStr == null || "".equals(dateFormatStr)) { dateFormatStr = DEFAULT_DATE_FORMAT; } SimpleDateFormat simpleDteFormat = new SimpleDateFormat(dateFormatStr); return simpleDteFormat.format(date); } public static String DateToString(Date date) { return DateToString(date, DEFAULT_DATE_FORMAT2); } /** * 跟参数参数day 返回 day 那天00:00:00 时候的时间戳long * * @return */ public static Long dayToTimestampStart(Date day) { String dayStr = DateUtil.DateToString(day, DateUtil.DATE_FORMAT); Timestamp start = DateUtil.cString2Timestamp(dayStr + " 00:00:00", DateUtil.DEFAULT_DATE_FORMAT2); return start.getTime(); } /** * 跟参数参数day 返回 day 那天23:59:59 时候的时间戳long * * @return */ public static Long dayToTimestampEnd(Date day) { String dayStr = DateUtil.DateToString(day, DateUtil.DATE_FORMAT); Timestamp start = DateUtil.cString2Timestamp(dayStr + " 23:59:59", DateUtil.DEFAULT_DATE_FORMAT2); return start.getTime(); } /** * 跟参数参数day 返回 day 那天相隔多少秒的的时间戳时候的时间戳long * Date day 这个时间是带小时 分钟 秒的 用于5分钟 * @return */ public static Long dayTimeToTimestampStart(Date day,int temp) { String dayStr = DateUtil.DateToString(day, DateUtil.DEFAULT_DATE_FORMAT2); String day_str = dayStr.substring(0,15); String day_str_start = day_str+"0:00"; Timestamp start = DateUtil.cString2Timestamp(day_str_start, DateUtil.DEFAULT_DATE_FORMAT2); long start_time = start.getTime() - temp;// return start_time; } /** * 跟参数参数day 返回 day 那天相隔多少秒的的时间戳时候的时间戳long * Date day 这个时间是带小时 分钟 秒的 * @return */ public static Long dayTimeToTimestampEnd(Date day,int temp) { String dayStr = DateUtil.DateToString(day, DateUtil.DEFAULT_DATE_FORMAT2); //if() String day_str = dayStr.substring(0,15); String day_str_end = day_str+"0:00"; Timestamp start = DateUtil.cString2Timestamp(day_str_end, DateUtil.DEFAULT_DATE_FORMAT2); long end_time = start.getTime() + temp;// return end_time; } /** * 跟参数参数day 返回 day 那天相隔多少秒的的时间戳时候的时间戳long * Date day 这个时间是带小时 分钟 秒的 用于1小时 * @return */ public static Long dayTimeToTimestampStartOneHour(Date day,int temp) { String dayStr = DateUtil.DateToString(day, DateUtil.DEFAULT_DATE_FORMAT2); String day_str = dayStr.substring(0,14); String day_str_start = day_str+"00:00"; Timestamp start = DateUtil.cString2Timestamp(day_str_start, DateUtil.DEFAULT_DATE_FORMAT2); long start_time = start.getTime() - temp;// return start_time; } /** * 将string转换成指定类型的Timestamp * * @param str * String 被转换的String类型的日期 * @param type * String 日期格式 * @return Long 返加long类型的日期 如:1368979200 */ public static Long cString2Timestamp2(String str, String type) { if (type == null || type.equals("")) { type = DEFAULT_DATE_FORMAT2; } if (str.length() <= 10) { str = str + " 00:00:00"; } SimpleDateFormat df = new java.text.SimpleDateFormat(type); try { return new Timestamp(df.parse(str).getTime() / 1000).getTime(); } catch (ParseException e) { e.printStackTrace(); return null; } } /** * 返回当前日期时间的字符串 * * @param dateFormatStr * String 要转换的日期类型 * @return String 返加String类型的日期 */ public static String getCurrentDateTime(String dateFormatStr) { if (dateFormatStr == null || "".equals(dateFormatStr)) { dateFormatStr = DEFAULT_DATE_FORMAT2; } Date date = new Date(); SimpleDateFormat simpleDteFormat = new SimpleDateFormat(dateFormatStr); return simpleDteFormat.format(date); } /** * 返回当前日期的字符串 * * @param dateFormatStr * String 日期格式 * @return String 返回当前日期的字符串 */ public static String getCurrentDate(String dateFormatStr) { if (dateFormatStr == null || "".equals(dateFormatStr)) { dateFormatStr = DATE_FORMAT; } Date date = new Date(); SimpleDateFormat simpleDteFormat = new SimpleDateFormat(dateFormatStr); return simpleDteFormat.format(date); } /** * 将字符串转换为Date * * @param strDate * String 被转换的String类型的日期 * @param strDateFormat * String Date格式 * @return Date 返加Date类型的日期 */ public static Date StringTodate(String strDate, String strDateFormat) { if (strDate == null || "".equals(strDateFormat) || strDateFormat == null) { strDateFormat = DEFAULT_DATE_FORMAT2; } Date rDate; SimpleDateFormat format = new SimpleDateFormat(strDateFormat); try { rDate = format.parse(strDate); } catch (Exception e) { e.printStackTrace(); return null; } return rDate; } /** * 将string转换成指定类型的Timestamp * * @param str * String 被转换的String类型的日期 * @param type * String 日期格式 * @return Timestamp 返加Timestamp类型的日期 */ public static Timestamp cString2Timestamp(String str, String type) { if (type == null || type.equals("")) { type = DEFAULT_DATE_FORMAT2; } if (str.length() <= 10) { str = str + " 00:00:00"; } SimpleDateFormat df = new java.text.SimpleDateFormat(type); try { return new Timestamp(df.parse(str).getTime() / 1000); } catch (ParseException e) { e.printStackTrace(); return null; } } public static Timestamp getTimeStamp() { return cString2Timestamp(getCurrentDateTime(null), null); } /** * 将Timestamp转换成指定类型的string * * @param ts * Timestamp 被转换的Timestamp类型的日期 * @param type * String 日期格式 * @return String 返加String类型的日期 */ public static String cTimestamp2String(Timestamp ts, String type) { SimpleDateFormat df = new java.text.SimpleDateFormat(type); return df.format(new java.util.Date(ts.getTime())); } /** * 将long型的Timestamp值转换成指定类型的string 例如将1362120197734数值转换为制定类型的String日期 * * @param ts * Timestamp 被转换的Timestamp类型的日期 * @param type * String 日期格式 * @return String 返加String类型的日期 */ public static String cTimestampLong2String(long ts, String type) { SimpleDateFormat df = new java.text.SimpleDateFormat(type); return df.format(new java.util.Date(ts * 1000)); } /** * 将字符串型的Timestamp值转换成指定类型的string 例如将"1362120197734" 字符创转换为制定类型的String日期 * * @param ts * Timestamp 被转换的Timestamp类型的日期 * @param type * String 日期格式 * @return String 返加String类型的日期 */ public static String cTimestampStr2String(String ts, String type) { Double tmp = new Double(ts); tmp = Math.floor(tmp); return cTimestampLong2String(tmp.longValue(), type); } /** * 将字符串型的Timestamp值转换成Date 例如将"1362120197734" 字符创转换为日期 * * @param ts * Timestamp 被转换的Timestamp类型的日期 * @return date */ public static Date cTimestampStr2Date(String ts) { Double tmp = new Double(ts); tmp = Math.floor(tmp); // long tem=Long.parseLong(ts); return StringTodate( cTimestampLong2String(tmp.longValue(), DATE_FORMAT), DATE_FORMAT); } /** * 将Timestamp转换成date * * @param ts * Timestamp 被转换的Timestamp类型的日期 * @return Date 返加Date类型的日期 */ public static Date cTimestamp2Date(Timestamp ts) { String strDate = cTimestamp2String(ts, DEFAULT_DATE_FORMAT2); return StringTodate(strDate, DEFAULT_DATE_FORMAT2); } /** * 日期相加函数 * * @param sorDate * String 被加的日期,必须为String类型 * @param value * int 天数,可为负数 * @param dateType * String 日期格式 * @return String 相加后的日期,必须为String类型 */ public static String dateAdd(String sorDate, int value, String dateType) { if (dateType == null || value == 0 || sorDate == null) { return sorDate; } Date date = DateUtil.StringTodate(sorDate, DATE_FORMAT); Date getDate = DateUtil.dateAdd(date, value, dateType); return DateUtil.DateToString(getDate, DATE_FORMAT); } /** * 日期相加函数 * * @param sorDate * Date 被加的日期,必须为Date类型 * @param value * int 天数,可为负数 * @param dateType * String 日期格式 * @return Date 相加后的日期 */ public static Date dateAdd(Date sorDate, int value, String dateType) { if (dateType == null || value == 0 || sorDate == null) { return sorDate; } Calendar calendar = Calendar.getInstance(); calendar.setTime(sorDate); if (dateType.equalsIgnoreCase(DATE_TYPE_SECOND)) { calendar.add(Calendar.SECOND, value); } else if (dateType.equalsIgnoreCase(DATE_TYPE_MINUTE)) { calendar.add(Calendar.MINUTE, value); } else if (dateType.equalsIgnoreCase(DATE_TYPE_HOUR)) { calendar.add(Calendar.HOUR, value); } else if (dateType.equalsIgnoreCase(DATE_TYPE_WEEK)) { calendar.add(Calendar.WEDNESDAY, value); } else if (dateType.equalsIgnoreCase(DATE_TYPE_DAY)) { calendar.add(Calendar.DATE, value); } else if (dateType.equalsIgnoreCase(DATE_TYPE_MONTH)) { calendar.add(Calendar.MONTH, value); } else if (dateType.equalsIgnoreCase(DATE_TYPE_YEAR)) { calendar.add(Calendar.YEAR, value); } return calendar.getTime(); } public static long getTimemillon(String start, String end) { try { Date startDate = SIMPLEDATEFORMAT.parse(start); Date endDate = SIMPLEDATEFORMAT.parse(end); return getTimemillon(startDate, endDate); } catch (ParseException e) { System.err.println("字符串: " + start + " or " + end + " 转换日期错误"); return 0; } } public static long getTimemillon(Date startDate, Date endDate) { return endDate.getTime() - startDate.getTime(); } public static String getNowDateTimeStr() { return DateToString(new Date()); } public static String getNowDateString() { return DateToString(new Date(), DATE_FORMAT); } /** * 获得当前时间的前一天,就是昨天的这个时刻 * * @return */ public static Date getYesterday() { Date date = new Date(); return dateAdd(date, -1, DATE_TYPE_DAY); } // 得到个时间段的差值 public static Long betWeenDate(String startDate, String endDate) { long zero = 0; Date start = DateUtil.StringTodate(startDate, DateUtil.DATE_FORMAT); Date end = DateUtil.StringTodate(endDate, DateUtil.DATE_FORMAT); long d1 = start.getTime(); long d2 = end.getTime(); if (d2 - d1 == 0) { return zero; } long date = (d2 - d1) / (24 * 60 * 62 * 1000) + 1; return date; } /** * 判断两天是否为同一天 * * @param startDate * @param endDate * @return */ public static boolean isSameDay(String startDate, String endDate) { boolean flag = false; Date start = DateUtil.StringTodate(startDate, DateUtil.DATE_FORMAT); Date end = DateUtil.StringTodate(endDate, DateUtil.DATE_FORMAT); Calendar calendar1 = Calendar.getInstance(); calendar1.setTimeInMillis(start.getTime()); Calendar calendar2 = Calendar.getInstance(); calendar2.setTimeInMillis(end.getTime()); if (calendar1.get(Calendar.YEAR) == calendar2.get(Calendar.YEAR) && calendar1.get(Calendar.MONTH) == calendar2 .get(Calendar.MONTH) && calendar1.get(Calendar.DATE) == calendar2.get(Calendar.DATE)) { flag = true; } return flag; } /** * 返回当前时间所属5分钟范围的开始时间。 * * @param date * @return */ public static String getStart5TimeStr(Date date) { String dayStr = DateUtil.DateToString(date, DateUtil.DATE_FORMAT); Calendar calendar1 = Calendar.getInstance(); calendar1.setTime(date); int hour = calendar1.get(Calendar.HOUR_OF_DAY); String hour_str = ""; int minute = calendar1.get(Calendar.MINUTE); String minute_str = ""; if (hour < 10) { hour_str = "0" + hour; } else { hour_str = "" + hour; } if (minute >= 10) { minute_str = (minute + "").substring(0, 1); minute = Integer.parseInt((minute + "").substring(1, 2)); if (minute >= 5) { minute_str = minute_str + "0"; /* * }else if(minute == 0){ minute_str = * (Integer.parseInt(minute_str)-1)+"0"; */ } else { minute_str = (Integer.parseInt(minute_str) - 1) + "" + 5; } return dayStr + " " + hour_str + ":" + minute_str + ":" + "00"; } else { if (minute >= 5) { calendar1.set(Calendar.MINUTE, 0); } else if (minute == 0) { calendar1.set(Calendar.HOUR_OF_DAY, hour - 1); calendar1.set(Calendar.MINUTE, 55); } else { calendar1.set(Calendar.HOUR_OF_DAY, hour - 1); calendar1.set(Calendar.MINUTE, 55); } calendar1.set(Calendar.SECOND, 0); return DateUtil.DateToString(calendar1.getTime(), DateUtil.DEFAULT_DATE_FORMAT2); } } /** * 返回当前时间所属5分钟范围的结束时间。 * * @param date * @return */ public static String getEnd5TimeStr(Date date) { String dayStr = DateUtil.DateToString(date, DateUtil.DATE_FORMAT); Calendar calendar1 = Calendar.getInstance(); calendar1.setTime(date); int hour = calendar1.get(Calendar.HOUR_OF_DAY); String hour_str = ""; int minute = calendar1.get(Calendar.MINUTE); String minute_str = ""; if (hour < 10) { hour_str = "0" + hour; } else { hour_str = "" + hour; } if (minute >= 10) { minute_str = (minute + "").substring(0, 1); minute = Integer.parseInt((minute + "").substring(1, 2)); if (minute >= 5) { minute_str = minute_str + "4"; /* * }else if(minute == 0){ minute_str = * (Integer.parseInt(minute_str)-1)+"4"; */ } else { minute_str = (Integer.parseInt(minute_str) - 1) + "" + 9; } return dayStr + " " + hour_str + ":" + minute_str + ":" + "59"; } else { if (minute >= 5) { calendar1.set(Calendar.MINUTE, 4); } else { calendar1.set(Calendar.HOUR_OF_DAY, hour - 1); calendar1.set(Calendar.MINUTE, 59); } calendar1.set(Calendar.SECOND, 59); return DateUtil.DateToString(calendar1.getTime(), DateUtil.DEFAULT_DATE_FORMAT2); } } /** * 返回当前时间前一小时的开始时间。 * * @param date * @return */ public static String getStartHourTimeStr(Date date) { Calendar calendar1 = Calendar.getInstance(); calendar1.setTime(date); calendar1.add(Calendar.HOUR, -1); calendar1.set(Calendar.MINUTE, 0); calendar1.set(Calendar.SECOND, 0); return DateUtil.DateToString(calendar1.getTime(), DateUtil.DEFAULT_DATE_FORMAT2); } /** * 返回当前时间前一小时的结束时间。 * * @param date * @return */ public static String getEndHourTimeStr(Date date) { Calendar calendar1 = Calendar.getInstance(); calendar1.setTime(date); calendar1.add(Calendar.HOUR, -1); calendar1.set(Calendar.MINUTE, 59); calendar1.set(Calendar.SECOND, 59); return DateUtil.DateToString(calendar1.getTime(), DateUtil.DEFAULT_DATE_FORMAT2); } /** * 获取一个星期的第一天 礼拜一的日期 * 具体日期型 * 例如:2015-12-23 * @return */ public static String getWeekStartStr(Date date) { // Calendar cal = Calendar.getInstance(); // cal.setTime(date); // SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); // cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); // 获取本周一的日期 Calendar c = Calendar.getInstance(); c.setTime(date); 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 DateUtil.DateToString(c.getTime(), DateUtil.DATE_FORMAT); } /** * 获取一个星期的最后日期 礼拜日的日期 * 具体日期型 * 例如:2015-12-23 * @return */ public static String getWeekEndStr(Date date) { // Calendar cal = Calendar.getInstance(); // cal.setTime(date); // SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); // cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);// 获取本周末的日期 // cal.add(Calendar.WEEK_OF_YEAR, 1);// 增加一个星期,才是我们中国人理解的本周日的日期 Calendar c = Calendar.getInstance(); c.setTime(date); 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 + 7); return DateUtil.DateToString(c.getTime(), DateUtil.DATE_FORMAT); } /** * 得到当前日期所在周的第一天 * 以时间戳形式 * @param date * @return */ public static long getWeekStartTime(Date date){ Timestamp start = DateUtil.cString2Timestamp(getWeekStartStr(date) + " 00:00:00", DateUtil.DEFAULT_DATE_FORMAT2); return start.getTime(); } /** * 得到当前日期所在周的最后一天 * 以时间戳形式 * @param date * @return */ public static long getWeekEndTime(Date date){ Timestamp start = DateUtil.cString2Timestamp(getWeekEndStr(date) + " 23:59:59", DateUtil.DEFAULT_DATE_FORMAT2); return start.getTime(); } /** * 获取一个月的第一天的日期日期 * 具体日期型 * 例如:2015-12-01 * @return */ public static String getMonthStartStr(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.MONTH, 0); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); cal.set(Calendar.DAY_OF_MONTH,1); // 获取本周一的日期 return DateUtil.DateToString(cal.getTime(), DateUtil.DATE_FORMAT); } /** * 获取某个月的第几个月之前或者之后的日期 * 具体日期型 datestr 是 2015-03-27 i是之前或者之后叠加日期 * @return */ public static String getMonthStarttime(String datestr,int i) { Date date=DateUtil.StringTodate(datestr, DateUtil.DATE_FORMAT); Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.MONTH, i); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); // cal.set(Calendar.DAY_OF_MONTH,i); // 获取本周一的日期 return df.format(cal.getTime()); } /** * 获取一个月的最后日期 * 具体日期型 * 例如:2015-12-31 * @return */ public static String getMonthEndStr(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.MONTH, 0); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH)); return DateUtil.DateToString(cal.getTime(), DateUtil.DATE_FORMAT); } /** * 得到当前日期所在周的第一天 * 以时间戳形式 * @param date * @return */ public static long getMonthStartTime(Date date){ Timestamp start = DateUtil.cString2Timestamp(getMonthStartStr(date) + " 00:00:00", DateUtil.DEFAULT_DATE_FORMAT2); return start.getTime(); } /** * 计算两个日期相差的月份 * @param start String 类型的两个时间 如: 2015-03-27 * @param end String 类型的两个时间 如: 2015-03-27 * @return */ public static int getDateMonth(String starttime, String endtime) { Date start=DateUtil.StringTodate(starttime, DateUtil.DATE_FORMAT); Date end=DateUtil.StringTodate(endtime, DateUtil.DATE_FORMAT); if (start.after(end)) { Date t = start; start = end; end = t; } Calendar startCalendar = Calendar.getInstance(); startCalendar.setTime(start); Calendar endCalendar = Calendar.getInstance(); endCalendar.setTime(end); Calendar temp = Calendar.getInstance(); temp.setTime(end); temp.add(Calendar.DATE, 1); int year = endCalendar.get(Calendar.YEAR) - startCalendar.get(Calendar.YEAR); int month = endCalendar.get(Calendar.MONTH) - startCalendar.get(Calendar.MONTH); if ((startCalendar.get(Calendar.DATE) == 1) && (temp.get(Calendar.DATE) == 1)) { return year * 12 + month + 1; } else if ((startCalendar.get(Calendar.DATE) != 1) && (temp.get(Calendar.DATE) == 1)) { return year * 12 + month; } else if ((startCalendar.get(Calendar.DATE) == 1) && (temp.get(Calendar.DATE) != 1)) { return year * 12 + month; } else { return (year * 12 + month - 1) < 0 ? 0 : (year * 12 + month); } } /** * 得到当前日期所在周的最后一天 * 以时间戳形式 * @param date * @return */ public static long getMonthEndTime(Date date){ Timestamp start = DateUtil.cString2Timestamp(getMonthEndStr(date) + " 23:59:59", DateUtil.DEFAULT_DATE_FORMAT2); return start.getTime(); } /** * 计算两个日期之间相差的天数 * @param smdate 较小的时间 * @param bdate 较大的时间 * @return 相差天数 * @throws ParseException */ public static int daysBetween(Date smdate,Date bdate) throws ParseException { SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); smdate=sdf.parse(sdf.format(smdate)); bdate=sdf.parse(sdf.format(bdate)); Calendar cal = Calendar.getInstance(); cal.setTime(smdate); long time1 = cal.getTimeInMillis(); cal.setTime(bdate); long time2 = cal.getTimeInMillis(); long between_days=(time2-time1)/(1000*3600*24); return Integer.parseInt(String.valueOf(between_days)); } public static int getMonthSpace(String date1, String date2)throws ParseException { int result = 0; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar c1 = Calendar.getInstance(); Calendar c2 = Calendar.getInstance(); c1.setTime(sdf.parse(date1)); c2.setTime(sdf.parse(date2)); result = c2.get(Calendar.MONTH) - c1.get(Calendar.MONTH); return Math.abs(result); } static Calendar getCalendar(String time) { if (null == time) { return null; } String[] times = time.split("-"); Calendar calendar = Calendar.getInstance(); calendar.set(Integer.valueOf(times[0]), Integer.valueOf(times[1]), Integer.valueOf(times[2])); return calendar; } public static int getMonth(String date1, String date2) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date start=null; Date end=null; try { start = sdf.parse(date1); end = sdf.parse(date2); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (start.after(end)) { Date t = start; start = end; end = t; } Calendar startCalendar = Calendar.getInstance(); startCalendar.setTime(start); Calendar endCalendar = Calendar.getInstance(); endCalendar.setTime(end); Calendar temp = Calendar.getInstance(); temp.setTime(end); temp.add(Calendar.DATE, 1); int year = endCalendar.get(Calendar.YEAR) - startCalendar.get(Calendar.YEAR); int month = endCalendar.get(Calendar.MONTH) - startCalendar.get(Calendar.MONTH); if ((startCalendar.get(Calendar.DATE) == 1) && (temp.get(Calendar.DATE) == 1)) { return year * 12 + month + 1; } else if ((startCalendar.get(Calendar.DATE) != 1) && (temp.get(Calendar.DATE) == 1)) { return year * 12 + month; } else if ((startCalendar.get(Calendar.DATE) == 1) && (temp.get(Calendar.DATE) != 1)) { return year * 12 + month; } else { return (year * 12 + month - 1) < 0 ? 0 : (year * 12 + month); } } /** * @param stringdate 2015-12-20 * @return 2015年12月20日 */ public static String getDateYMD(String stringdate){ String yearstr=stringdate.substring(0,4); String monthStr=stringdate.substring(5,7); String dayStr=stringdate.substring(8,10); String datestr=yearstr+"年"+monthStr+"月"+dayStr+"日"; return datestr; } /** * * @param stringdate 2015-12-20 * @param 所跨月份可为正负 * @return month=1 ,返回 2016-01-20 */ public static String getDateByMonth(String stringdate,int month) { Date date=DateUtil.StringTodate(stringdate, DATE_FORMAT); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.MONTH, month); Date theDate = calendar.getTime(); String datestr=DateUtil.DateToString(theDate, DATE_FORMAT); return datestr; } public static void main(String[] args) { // Calendar cl = Calendar.getInstance(); // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // String date1="2015-01-11"; // String date2="2014-12-04"; // try { // cl.setTime(sdf.parse(date1)); // } catch (ParseException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // System.out.println(cl.get(Calendar.WEEK_OF_YEAR)); // Date date = StringTodate("2015-02-01", DateUtil.DATE_FORMAT); // System.out.println(getWeekEndStr(date)); // String monthdatesend=DateUtil.cTimestampStr2String(DateUtil.getMonthEndTime(date)+"",DateUtil.DEFAULT_DATE_FORMAT2); // System.out.println(monthdatesend); // System.out.println(DateUtil.getMonthStartStr(new Date())); String query_timeYMD="2016-06-22"; //获取已知日期的周一和周末 long startdate=DateUtil.getWeekStartTime(DateUtil.StringTodate(query_timeYMD, DateUtil.DATE_FORMAT)); long enddate=DateUtil.getWeekEndTime(DateUtil.StringTodate(query_timeYMD, DateUtil.DATE_FORMAT)); System.out.println(startdate+"----"+enddate); //获取已知日期的月初和月末 startdate=DateUtil.getMonthStartTime(DateUtil.StringTodate(query_timeYMD, DateUtil.DATE_FORMAT)); enddate=DateUtil.getMonthEndTime(DateUtil.StringTodate(query_timeYMD, DateUtil.DATE_FORMAT)); System.out.println(startdate+"----"+enddate); Date day=new Date(); String now=DateUtil.DateToString(day, DateUtil.DATE_FORMAT); String nowbefore1=DateUtil.dateAdd(now, -1,DateUtil.DATE_TYPE_DAY);//前1天日期 Date day_1=DateUtil.StringTodate(nowbefore1, DateUtil.DATE_FORMAT); System.out.println(DateUtil.dayToTimestampStart(day_1)); } }
java 日期转换和相关的计算
猜你喜欢
转载自blog.csdn.net/shy415502155/article/details/80511632
今日推荐
周排行