1,获取当月最后一天,精确到秒
public static Date getMaxMonthDate(String date) {
//格式化为年月
Calendar calendar = null;
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
calendar = Calendar.getInstance();
calendar.setTime(sdf.parse(date));
calendar.add(Calendar.MONTH, 1);
//在当前月的下一月基础上减去1毫秒
calendar.add(Calendar.MILLISECOND, -1);
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
} catch (ParseException e) {
log.error("getMaxMonthDate: error", e);
}
return calendar.getTime();
}
输出:
2,获取当月第一天,精确到秒
public static Date getMinMonthDate(String date) throws ParseException {
//格式化为年月
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
Calendar calendar = Calendar.getInstance();
calendar.setTime(sdf.parse(date));
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
return calendar.getTime();
}
3,根据当前日期,获取季度数据
说明:
第一季度:1,2,3
第二季度:4,5,6
第三季度:7,8,9
第四季度:10,11,12
public static Map<String, Integer> getQuarterAndYearByDate(String date) throws ParseException{
if(date == ""|| "".equals(date)){
return null;
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
Date datePar = sdf.parse(date);
Calendar calendar = Calendar.getInstance();
calendar.setTime(datePar);
Integer year = calendar.get(Calendar.YEAR);
int m = calendar.get(Calendar.MONTH) + 1;
Integer quarter = null;
if (m >= 1 && m <= 3) {
quarter = 1;
}
if (m >= 4 && m <= 6) {
quarter = 2;
}
if (m >= 7 && m <= 9) {
quarter = 3;
}
if (m >= 10 && m <= 12) {
quarter = 4;
}
HashMap<String, Integer> map = new HashMap<>();
map.put("year",year);
map.put("quarter",quarter);
return map;
}
4,提取日期的年,月,日,时,分,秒
public static void getDateTime(String date) throws ParseException {
String date = "2025-12-09 12:30:49";
System.out.println("date = " + date);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar calendar = Calendar.getInstance();
calendar.setTime(sdf.parse(date));
Integer year = calendar.get(Calendar.YEAR);
System.out.println("year = " + year);
Integer month = calendar.get(Calendar.MONTH) + 1;
System.out.println("month = " + month);
Integer day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println("day = " + day);
Integer hour=calendar.get(Calendar.HOUR_OF_DAY);
System.out.println("hour = " + hour);
Integer minute=calendar.get(Calendar.MINUTE);
System.out.println("minute = " + minute);
Integer second=calendar.get(Calendar.SECOND);
System.out.println("second = " + second);
}
输出:
5,获得某天最大时间 2020-02-19 23:59:59
// 获得某天最大时间 2020-02-19 23:59:59
public static Date getEndOfDay(String date) throws ParseException {
LocalDateTime endOfDay = null;
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date parse = sdf.parse(date);
LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(parse.getTime()), ZoneId.systemDefault());
endOfDay = localDateTime.with(LocalTime.MAX);
} catch (ParseException e) {
e.printStackTrace();
}
return Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant());
}
6,获得某天最小时间 2020-02-17 00:00:00
// 获得某天最小时间 2020-02-17 00:00:00
public static Date getStartOfDay(String date) throws ParseException {
LocalDateTime startOfDay = null;
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date parse = sdf.parse(date);
LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(parse.getTime()), ZoneId.systemDefault());
startOfDay = localDateTime.with(LocalTime.MIN);
} catch (ParseException e) {
e.printStackTrace();
}
return Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant());
}
或者更简单点
// 利用Apache lang包快速获取凌晨0点0分0秒,23点59分59秒字符串
System.out.println(DateFormatUtils.format(new Date(), "yyyy-MM-dd 00:00:00"));
System.out.println(DateFormatUtils.format(new Date(), "yyyy-MM-dd 23:59:59"));
7,String和Date类型互相转换
public static Date StringToDate(String date) throws ParseException{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
Date parse = sdf.parse(date);
LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(parse.getTime()), ZoneId.systemDefault());
LocalDateTime startOfDay = localDateTime.with(LocalTime.MIN);
return Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant());
}
public static String DateToString(Date date, String format){
String formatStr = ToolUtil.isEmpty(format) ? "yyyy-MM-dd HH:mm:ss" : format;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(formatStr);
return simpleDateFormat.format(date);
}