实现思路:使用下一个月的第一天,减去1秒,得到结果是上一个月的最后一天。举例:2020年1月31日,用2020年2月1日减去1秒,得到2020年1月31日 23:59:59
代码
/**
* yyyy-MM-dd
*/
public static final String EN_YYYY_MM_DD = "yyyy-MM-dd";
/**
* 字符串类型转化为日期类型
*
* @param dateStr 一定格式的字符串
* @param dateFormat 指定格式(为null时,默认yyyy-MM-dd)
* @return date
*/
public static Date toDate(String dateStr, String dateFormat) {
if (dateFormat == null || dateFormat.equals("")) { // 指定格式(为null时,默认yyyy-MM-dd)
dateFormat = EN_YYYY_MM_DD;
}
SimpleDateFormat sf = new SimpleDateFormat(dateFormat);
Date date = null;
try {
date = sf.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
获取指定日期加秒后日期
/**
* 获取指定日期加秒钟后日期
*
* @param date 指定日期,为null,默认当前
* @param second 移动秒钟,正数向后移动,负数向前移动
* @return
*/
public static Date dateMoveSecond(Date date, int second) {
if (date == null) { // 日期为空,默认当前时间
Calendar c = Calendar.getInstance(UTC8); // 获取指定时区当前时间
date = c.getTime();
}
Calendar c = Calendar.getInstance(UTC8);
c.setTime(date);
c.add(Calendar.SECOND, second);
return c.getTime();
}
将日期类型按照指定格式转化为字符串
/**
* 将日期类型按照指定格式转化为字符串
*
* @param date 日期(为null时,默认当前东八区时间)
* @param dateFormat 指定格式(为null时,默认yyyy-MM-dd)
* @return
*/
public static String toString(Date date, String dateFormat) {
if (date == null) { // 日期(为null时,默认当前东八区时间)
Calendar c = Calendar.getInstance(UTC8); // 获取指定时区当前时间
date = c.getTime();
}
if (dateFormat == null || dateFormat.equals("")) { // 指定格式(为null时,默认yyyy-MM-dd)
dateFormat = EN_YYYY_MM_DD;
}
SimpleDateFormat sf = new SimpleDateFormat(dateFormat);
String string = sf.format(date);
return string;
}
获取某一年的某一月的最后一天
/**
* 获取某一年的某一月的最后一天
*
* @param year
* @param month
* @return
*/
public static String getLastDayOfMonth(int year, int month) {
int nextYear;
int nextMonth;
if (month == 12){
nextYear = year + 1;
nextMonth = 1;
} else {
nextYear = year;
nextMonth = month + 1;
}
String monthString = (nextMonth < 10) ? "0" + nextMonth : nextMonth + "";
String lastDateString = nextYear + "-" + monthString + "-01";
Date lastDate = toDate(lastDateString, null);
Date resultDate = dateMoveSecond(lastDate, -1);
String lastString = toString(resultDate, null);
return lastString;
}