-
- 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));
- }
- }
- 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 日期转换和相关的计算
最新推荐文章于 2022-09-17 17:15:33 发布