前言
- 获取当月的天数
- 获取前月的第一天
- 获取前月的最后一天
- 返回已添加指定时间间隔的日期(时间间隔(“y”:年;”d”:天;”m”:月)
- 根据传入的年、月获取月初Date
- 根据传入的年、月获取月末Date
- 获取当前年月
- 获取某年月的天数
- 获取某年月的最后一天
- 根据传过来的Str和格式,格式化str到Date
代码
/**
* 日期工具类
*/
public class DateUtil {
/**
* 获取当月的天数
* */
public static int getCurrentMonthDaysCount() {
Calendar a = Calendar.getInstance();
a.set(Calendar.DATE, 1);
a.roll(Calendar.DATE, -1);
int maxDate = a.get(Calendar.DATE);
return maxDate;
}
/**
*
* @Description 获取前月的第一天
* @return
*/
public static Date getCurrentMonthFirstDay(){
Calendar cale = Calendar.getInstance();
cale.add(Calendar.MONTH, 0);
cale.set(Calendar.DAY_OF_MONTH, 1);
return cale.getTime();
}
/**
*
* @Description 获取前月的最后一天
* @return
*/
public static Date getCurrentMonthLastDay(){
Calendar cale = Calendar.getInstance();
cale.add(Calendar.MONTH, 1);
cale.set(Calendar.DAY_OF_MONTH, 0);
return cale.getTime();
}
/**
* 返回已添加指定时间间隔的日期
*
* @param interval 表示要添加的时间间隔("y":年;"d":天;"m":月;如有必要可以自行增加)
* @param number 表示要添加的时间间隔的个数
* @param date java.util.Date() 被操作的日期
* @param dateFormat 返回的日期格式
* @return Date 默认为yyyy-MM-dd HH:mm:ss.SSS格式的日期
*/
public static Date dateAddToDate(String interval, int number,
java.util.Date date, String dateFormat) {
if (dateFormat == null || "".equals(dateFormat)) {
dateFormat = "yyyy-MM-dd HH:mm:ss sss";
}
GregorianCalendar gc = new GregorianCalendar();
gc.setTime(date);
// 加若干年
if (interval.equals("y")) {
int currYear = gc.get(Calendar.YEAR);
gc.set(Calendar.YEAR, currYear + number);
}
// 加若干月
else if (interval.equals("m")) {
int currMonth = gc.get(Calendar.MONTH);
gc.set(Calendar.MONTH, currMonth + number);
}
// 加若干天
else if (interval.equals("d")) {
int currDay = gc.get(Calendar.DATE);
gc.set(Calendar.DATE, currDay + number);
}
// 加若小时
else if (interval.equals("h")) {
int currDay = gc.get(Calendar.HOUR);
gc.set(Calendar.HOUR, currDay + number);
}
// 加若分
else if (interval.equals("f")) {
int currDay = gc.get(Calendar.MINUTE);
gc.set(Calendar.MINUTE, currDay + number);
}
return gc.getTime();
}
/**
* 获取月初Date
* @param year
* @param month
* @return Date 返回类型
* @throws
*/
public static Date getMonthStartDay(int year,int month){
Calendar ca =Calendar.getInstance();
ca.set(Calendar.YEAR, year);
ca.set(Calendar.MONTH, month-1);
ca.set(Calendar.DAY_OF_MONTH,1);
return ca.getTime();
}
/**
* 获取月末Date
* @param year
* @param month
* @return Date 返回类型
* @throws
*/
public static Date getMonthEndDay(int year,int month){
Date d=getMonthStartDay(year,month);
Calendar ca =Calendar.getInstance();
ca.setTime(d);
ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
return ca.getTime();
}
/**
*
* @Description 获取当前年月
* @return
*/
public static String getCurrentYearMonth(){
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH )+1;
return year + "-" + (month < 10 ? ("0" + month) : month);
}
/**
*
* @Description 获取某年月的天数
* @param yearMonth 年月(如2017-06)
* @return
*/
public static int getDayCountByYearMonth(String yearMonth){
Calendar cal = Calendar.getInstance();
cal.setTime(DateUtil.strToDate(yearMonth + "-01", "yyyy-MM-dd"));
cal.set(Calendar.DATE, 1);
cal.roll(Calendar.DATE, -1);
int maxDate = cal.get(Calendar.DATE);
return maxDate;
}
/**
*
* @Description 获取某年月的最后一天
* @param yearMonth 年月
* @return
*/
public static Date getLastDayByYearMonth(String yearMonth){
Calendar cale = Calendar.getInstance();
cale.setTime(DateUtil.strToDate(yearMonth + "-01", "yyyy-MM-dd"));
cale.add(Calendar.MONTH, 1);
cale.set(Calendar.DAY_OF_MONTH, 0);
return cale.getTime();
}
/**
* 根据传过来的Str和格式,格式化str到Date
* @param str 日期
* @param formatLayout 转换格式 如:yyyy-MM-dd HH:mm:ss
* @return Date
* @throws ParseException
*/
public static Date strToDate(String str,String formatLayout){
if (str == null || str.trim().length() < 1)
return null;
SimpleDateFormat df = new SimpleDateFormat(formatLayout);
Date date = null;
try {
date = df.parse(str);
} catch (ParseException e) {
return null;
}
return date;
}
}
3.日期工具类中的方法还会继续收集汇总……,方便自已,方便他人,量的积累,会产生质的变化。