我的JAVA笔记之日期工具类
上代码:
public class DateUtils {
//获取最近一年的月份[2019-07,2019-08,2019-09.....]
public static List<String> getThisYearMonths(){
List<String> months = new ArrayList<>();
//获取日历对象
Calendar calendar = Calendar.getInstance();
//调整月份到 12个月以前
calendar.add(Calendar.MONTH, -12);
/**
* 循环12 次,获取 12个月份
*/
for (int i = 0; i < 12; i++) {
//把日历转换为date
Date date = calendar.getTime();
//再把date转换为字符串
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
String dateStr = sdf.format(date);
months.add(dateStr);
//循环一次,增长一个月
calendar.add(Calendar.MONTH, 1);
}
return months;
}
//string格式日期转为Date日期格式
public static Date parseString2Date(String dateStr) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = sdf.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
//date日期格式转为String日期格式
public static String parseDate2String(Date orderDate) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String str = sdf.format(orderDate);
return str;
}
//将日期转为指定格式的String
public static String parseDate2String(Date orderDate, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
String str = sdf.format(orderDate);
return str;
}
//获取本周第一天,西方人的习惯: 周日为第一天,周六为最后一天
public static Date getThisWeekFirstDay(){
//日历对象
Calendar calendar = Calendar.getInstance();
int i = calendar.get(Calendar.DAY_OF_WEEK);
if(i == 1){
//说明为周日, 往前减 6天
calendar.add(Calendar.DAY_OF_MONTH, -6);
}else{
calendar.add(Calendar.DAY_OF_MONTH, -(i - 2));
}
return calendar.getTime();
}
//获取本周最后一天
public static Date getThisWeekLastDay(){
//日历对象
Calendar calendar = Calendar.getInstance();
int i = calendar.get(Calendar.DAY_OF_WEEK);
if(i == 1){
//说明就是周日
return calendar.getTime();
}else{
calendar.add(Calendar.DAY_OF_MONTH, (8 - i));
return calendar.getTime();
}
}
//获取本月第一天
public static Date thisMonthFirstDay(){
//当前日期
Calendar calendar = Calendar.getInstance();
//设置为1号
calendar.set(Calendar.DAY_OF_MONTH, 1);
return calendar.getTime();
}
//获取本月最后一天
public static Date thisMonthLastDay(){
//当前日期
Calendar calendar = Calendar.getInstance();
//设置为1号
calendar.set(Calendar.DAY_OF_MONTH, 1);
//调整为下月1号
calendar.add(Calendar.MONTH, 1);
//再调整为前一天(为本月最后天)
calendar.add(Calendar.DAY_OF_MONTH, -1);
return calendar.getTime();
}
//获取传入月份的最后一天
public static Date getThisMonthLastDay(String thisMonthFirstDay){
try {
//把本月第一天的日期字符串转换为日期类型
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(thisMonthFirstDay);
//获取日历对象
Calendar calendar = Calendar.getInstance();
//设置日历为 本月第一天
calendar.setTime(date);
//设置下月第一天
calendar.add(Calendar.MONTH, 1);
//调整为前一天, 为本月最后一天
calendar.add(Calendar.DAY_OF_MONTH, -1);
return calendar.getTime();
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
}
欢迎批评指正