package com.jtools; | |
import java.text.ParseException; | |
import java.text.SimpleDateFormat; | |
import java.util.Calendar; | |
import java.util.Date; | |
import java.util.Locale; | |
/** | |
* 日期工具类 | |
* @author json_wang | |
* @date 2017-02-04 | |
* @version v1.0 | |
* @create by json_wang | |
* @edit | |
*/ | |
public class DateUtil { | |
/** | |
* 日期转化为字符串 | |
* @param date 日期 | |
* @param format 格式 | |
* @return | |
*/ | |
public static String dateToString(Date date,String format){ | |
String str = ""; | |
if(date != null){ | |
SimpleDateFormat formats = new SimpleDateFormat(format,Locale.CHINESE); | |
str = formats.format(date); | |
formats = null; | |
} | |
return str; | |
} | |
/** | |
* 字符串转化为日期 | |
* @param str 日期字符串 | |
* @param format 格式 | |
* @return | |
*/ | |
public static Date stringToDate(String str,String format){ | |
SimpleDateFormat formats = new SimpleDateFormat(format); | |
Date date = null; | |
try { | |
date = formats.parse(str); | |
} catch (ParseException e) { | |
e.printStackTrace(); | |
} | |
formats = null; | |
return date; | |
} | |
/** | |
* 计算两个日期之间相差的天数 | |
* @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))+1; | |
} | |
/** | |
* 判断一个时间是否在一个时间段内 | |
* @param date 要判断是否在时段内的日期 | |
* @param startTime 时间段的开始日期 yyyy-MM-dd HH:mm:ss | |
* @param endTime 时间段的结束日期 yyyy-MM-dd HH:mm:ss | |
* @return 在时间段内返回true ,不在返回false | |
* @throws ParseException | |
*/ | |
public static boolean isInTimeBucket(Date date,Date startTime,Date endTime){ | |
Calendar date1 = Calendar.getInstance(); | |
date1.setTime(date); | |
Calendar start = Calendar.getInstance(); | |
start.setTime(startTime); | |
Calendar end = Calendar.getInstance(); | |
end.setTime(endTime); | |
if(date1.after(start)&&date1.before(end)){ | |
return true; | |
}else{ | |
return false; | |
} | |
} | |
/** | |
* 得到某年某月的第一天开始时间 | |
* | |
* @param year | |
* @param month | |
* @return | |
*/ | |
public static Date getFirstDayOfMonth(int year, int month) { | |
Calendar cal = Calendar.getInstance(); | |
cal.set(Calendar.YEAR, year); | |
cal.set(Calendar.MONTH, month-1); | |
cal.set(Calendar.DAY_OF_MONTH, cal.getMinimum(Calendar.DATE)); | |
cal.set(Calendar.HOUR_OF_DAY, 0); | |
cal.set(Calendar.MINUTE, 0); | |
cal.set(Calendar.SECOND, 0); | |
return stringToDate("yyyy-MM-dd HH:mm:ss",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(cal.getTime())); | |
} | |
/** | |
* 得到某年某月的最后一天结束时间 | |
* | |
* @param year | |
* @param month | |
* @return | |
*/ | |
public static Date getLastDayOfMonth(int year, int month) { | |
Calendar cal = Calendar.getInstance(); | |
cal.set(Calendar.YEAR, year); | |
cal.set(Calendar.MONTH, month); | |
cal.set(Calendar.DAY_OF_MONTH, cal.getMinimum(Calendar.DATE)); | |
cal.set(Calendar.HOUR_OF_DAY, 0); | |
cal.set(Calendar.MINUTE, 0); | |
cal.set(Calendar.SECOND, 0); | |
cal.add(Calendar.SECOND, -1); | |
return stringToDate("yyyy-MM-dd HH:mm:ss",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(cal.getTime())); | |
} | |
/** | |
* 得到某年某月某一天的开始时间 | |
* @param year | |
* @param month | |
* @param day | |
* @return | |
*/ | |
public static Date getStartTimeOfDay(int year, int month, int day) { | |
Calendar cal = Calendar.getInstance(); | |
cal.set(Calendar.YEAR, year); | |
cal.set(Calendar.MONTH, month-1); | |
cal.set(Calendar.DAY_OF_MONTH, day); | |
cal.set(Calendar.HOUR_OF_DAY, 0); | |
cal.set(Calendar.MINUTE, 0); | |
cal.set(Calendar.SECOND, 0); | |
return stringToDate("yyyy-MM-dd HH:mm:ss",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(cal.getTime())); | |
} | |
/** | |
* 得到某年某月某一天的结束时间 | |
* @param year | |
* @param month | |
* @param day | |
* @return | |
*/ | |
public static Date getEndTimeOfDay(int year, int month, int day) { | |
Calendar cal = Calendar.getInstance(); | |
cal.set(Calendar.YEAR, year); | |
cal.set(Calendar.MONTH, month-1); | |
cal.set(Calendar.DAY_OF_MONTH, day+1); | |
cal.set(Calendar.HOUR_OF_DAY, 0); | |
cal.set(Calendar.MINUTE, 0); | |
cal.set(Calendar.SECOND, -1); | |
return stringToDate("yyyy-MM-dd HH:mm:ss",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(cal.getTime())); | |
} | |
/** | |
* 得到指定月的天数 | |
* @param year | |
* @param month | |
* @return | |
*/ | |
public static int getMonthDays(int year, int month){ | |
Calendar a = Calendar.getInstance(); | |
a.set(Calendar.YEAR, year); | |
a.set(Calendar.MONTH, month - 1); | |
a.set(Calendar.DATE, 1);//把日期设置为当月第一天 | |
a.roll(Calendar.DATE, -1);//日期回滚一天,也就是最后一天 | |
return a.get(Calendar.DATE); | |
} | |
/** | |
* 获取7天前的日期 | |
*/ | |
public static Date getSevenDaysBefore(){ | |
Calendar c = Calendar.getInstance(); | |
c.add(Calendar.DATE, -6); | |
return c.getTime(); | |
} | |
/** | |
* 获取季度开始日期时间 | |
* @return | |
*/ | |
public static Date getCurrentQuarterStartTime(int quarter){ | |
Date sDate = new Date(); | |
Calendar c = Calendar.getInstance(); | |
if(quarter == 1){ | |
sDate = getFirstDayOfMonth(c.get(Calendar.YEAR),Calendar.JANUARY+1); | |
}else if(quarter == 2){ | |
sDate = getFirstDayOfMonth(c.get(Calendar.YEAR),Calendar.APRIL+1); | |
}else if(quarter == 3){ | |
sDate = getFirstDayOfMonth(c.get(Calendar.YEAR),Calendar.JULY+1); | |
}else if(quarter == 4){ | |
sDate = getFirstDayOfMonth(c.get(Calendar.YEAR),Calendar.OCTOBER+1); | |
} | |
return sDate; | |
} | |
/** | |
* 获取季度结束日期时间 | |
* @return | |
*/ | |
public static Date getCurrentQuarterEndTime(int quarter){ | |
Date eDate = new Date(); | |
Calendar c = Calendar.getInstance(); | |
if(quarter == 1){ | |
eDate = getLastDayOfMonth(c.get(Calendar.YEAR),Calendar.MARCH+1); | |
}else if(quarter == 2){ | |
eDate = getLastDayOfMonth(c.get(Calendar.YEAR),Calendar.JUNE+1); | |
}else if(quarter == 3){ | |
eDate = getLastDayOfMonth(c.get(Calendar.YEAR),Calendar.SEPTEMBER+1); | |
}else if(quarter == 4){ | |
eDate = getLastDayOfMonth(c.get(Calendar.YEAR),Calendar.DECEMBER+1); | |
} | |
return eDate; | |
} | |
/** | |
* 获取年的开始日期 | |
*/ | |
public static Date getYearStartTime(){ | |
Calendar c = Calendar.getInstance(); | |
return getFirstDayOfMonth(c.get(Calendar.YEAR),Calendar.JANUARY+1); | |
} | |
/** | |
* 获取年的结束日期 | |
*/ | |
public static Date getYearEndTime(){ | |
Calendar c = Calendar.getInstance(); | |
return getLastDayOfMonth(c.get(Calendar.YEAR),Calendar.DECEMBER+1); | |
} | |
/** | |
* 判断日期在第几季度 | |
* 1 第一季度 2 第二季度 3 第三季度 4 第四季度 | |
* @param date | |
* @return | |
*/ | |
public static int getQuarter(Date date) { | |
int season = 0; | |
Calendar c = Calendar.getInstance(); | |
c.setTime(date); | |
int month = c.get(Calendar.MONTH); | |
switch (month) { | |
case Calendar.JANUARY: | |
case Calendar.FEBRUARY: | |
case Calendar.MARCH: | |
season = 1; | |
break; | |
case Calendar.APRIL: | |
case Calendar.MAY: | |
case Calendar.JUNE: | |
season = 2; | |
break; | |
case Calendar.JULY: | |
case Calendar.AUGUST: | |
case Calendar.SEPTEMBER: | |
season = 3; | |
break; | |
case Calendar.OCTOBER: | |
case Calendar.NOVEMBER: | |
case Calendar.DECEMBER: | |
season = 4; | |
break; | |
default: | |
break; | |
} | |
return season; | |
} | |
} |
DateUtil.java
最新推荐文章于 2023-08-02 12:05:36 发布