1、使用 LocalDateTime
最后的格式需要自己转换一下
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.temporal.TemporalAdjusters;
public class DateUtils {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
LocalDate firstDayOfMonth = today.with(TemporalAdjusters.firstDayOfMonth());
LocalDate lastDayOfMonth = today.with(TemporalAdjusters.lastDayOfMonth());
LocalDate firstDayOfYear = today.withDayOfYear(1);
LocalDate lastDayOfYear = today.withDayOfYear(today.lengthOfYear());
// 当日
LocalDateTime startOfDay = LocalDateTime.of(today, LocalTime.MIN);
LocalDateTime endOfDay = LocalDateTime.of(today, LocalTime.MAX);
// 本周(周一到周日)
LocalDate startOfWeek = today.with(TemporalAdjusters.previousOrSame(java.time.DayOfWeek.MONDAY));
LocalDate endOfWeek = today.with(TemporalAdjusters.nextOrSame(java.time.DayOfWeek.SUNDAY));
LocalDateTime startOfWeekDateTime = LocalDateTime.of(startOfWeek, LocalTime.MIN);
LocalDateTime endOfWeekDateTime = LocalDateTime.of(endOfWeek, LocalTime.MAX);
// 本月
LocalDateTime startOfMonth = LocalDateTime.of(firstDayOfMonth, LocalTime.MIN);
LocalDateTime endOfMonth = LocalDateTime.of(lastDayOfMonth, LocalTime.MAX);
// 本年
LocalDateTime startOfYear = LocalDateTime.of(firstDayOfYear, LocalTime.MIN);
LocalDateTime endOfYear = LocalDateTime.of(lastDayOfYear, LocalTime.MAX);
// 打印结果
System.out.println("当日开始时间: " + startOfDay);
System.out.println("当日结束时间: " + endOfDay);
System.out.println("本周开始时间: " + startOfWeekDateTime);
System.out.println("本周结束时间: " + endOfWeekDateTime);
System.out.println("本月开始时间: " + startOfMonth);
System.out.println("本月结束时间: " + endOfMonth);
System.out.println("本年开始时间: " + startOfYear);
System.out.println("本年结束时间: " + endOfYear);
}
}
2、使用 Calendar
import java.sql.Timestamp;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class DateUtil {
/**
* 获取当天开始时间
*
* @return
*/
public static Date getDayBegin() {
Calendar cal = Calendar.getInstance();
//0点
cal.set(Calendar.HOUR_OF_DAY, 0);
//0分
cal.set(Calendar.MINUTE, 0);
//0秒
cal.set(Calendar.SECOND, 0);
//0毫秒
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
/**
* 获取当天结束时间
*
* @return
*/
public static Date getDayEnd() {
Calendar cal = Calendar.getInstance();
//23点
cal.set(Calendar.HOUR_OF_DAY, 23);
//59分
cal.set(Calendar.MINUTE, 59);
//59秒
cal.set(Calendar.SECOND, 59);
return cal.getTime();
}
/**
* 获取昨天开始时间
*
* @return
*/
public static Date getBeginDayOfYesterday() {
Calendar cal = Calendar.getInstance();
//当天开始时间
cal.setTime(getDayBegin());
//当天月份天数减1
cal.add(Calendar.DAY_OF_MONTH, -1);
return cal.getTime();
}
/**
* 获取昨天结束时间
*
* @return
*/
public static Date getEndDayOfYesterday() {
Calendar cal = Calendar.getInstance();
//当天结束时间
cal.setTime(getDayEnd());
//当天月份天数减1
cal.add(Calendar.DAY_OF_MONTH, -1);
return cal.getTime();
}
/**
* 获取明天开始时间
*
* @return
*/
public static Date getBeginDayOfTomorrow() {
Calendar cal = Calendar.getInstance();
//当天开始时间
cal.setTime(getDayBegin());
//当天月份天数加1
cal.add(Calendar.DAY_OF_MONTH, 1);
return cal.getTime();
}
/**
* 获取明天结束时间
*
* @return
*/
public static Date getEndDayOfTomorrow() {
Calendar cal = Calendar.getInstance();
//当天结束时间
cal.setTime(getDayEnd());
//当天月份天数加1
cal.add(Calendar.DAY_OF_MONTH, 1);
return cal.getTime();
}
/**
* 获取某个日期的开始时间
*
* @param d
* @return
*/
public static Timestamp getDayStartTime(Date d) {
Calendar calendar = Calendar.getInstance();
if (null != d) {
calendar.setTime(d);
}
calendar.set(calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
calendar.set(Calendar.MILLISECOND, 0);
return new Timestamp(calendar.getTimeInMillis());
}
/**
* 获取某个日期的结束时间
*
* @param d
* @return
*/
public static Timestamp getDayEndTime(Date d) {
Calendar calendar = Calendar.getInstance();
if (null != d) {
calendar.setTime(d);
}
calendar.set(calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59);
calendar.set(Calendar.MILLISECOND, 999);
return new Timestamp(calendar.getTimeInMillis());
}
/**
* 获取本周的开始时间
*
* @return
*/
public static Date getBeginDayOfWeek() {
Date date = new Date();
if (date == null) {
return null;
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
if (dayOfWeek == 1) {
dayOfWeek += 7;
}
cal.add(Calendar.DATE, 2 - dayOfWeek);
return getDayStartTime(cal.getTime());
}
/**
* 获取本周的结束时间
*
* @return
*/
public static Date getEndDayOfWeek() {
Calendar cal = Calendar.getInstance();
cal.setTime(getBeginDayOfWeek());
cal.add(Calendar.DAY_OF_WEEK, 6);
Date weekEndSta = cal.getTime();
return getDayEndTime(weekEndSta);
}
/**
* 获取上周开始时间
*/
@SuppressWarnings("unused")
public static Date getBeginDayOfLastWeek() {
Date date = new Date();
if (date == null) {
return null;
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
if (dayofweek == 1) {
dayofweek += 7;
}
cal.add(Calendar.DATE, 2 - dayofweek - 7);
return getDayStartTime(cal.getTime());
}
/**
* 获取上周的结束时间
*
* @return
*/
public static Date getEndDayOfLastWeek() {
Calendar cal = Calendar.getInstance();
cal.setTime(getBeginDayOfLastWeek());
cal.add(Calendar.DAY_OF_WEEK, 6);
Date weekEndSta = cal.getTime();
return getDayEndTime(weekEndSta);
}
/**
* 获取今年是哪一年
*
* @return
*/
public static Integer getNowYear() {
Date date = new Date();
GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
gc.setTime(date);
return Integer.valueOf(gc.get(1));
}
/**
* 获取本月是哪一月
*
* @return
*/
public static int getNowMonth() {
Date date = new Date();
GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
gc.setTime(date);
return gc.get(2) + 1;
}
/**
* 获取本月的开始时间
*
* @return
*/
public static Date getBeginDayOfMonth() {
Calendar calendar = Calendar.getInstance();
calendar.set(getNowYear(), getNowMonth() - 1, 1);
return getDayStartTime(calendar.getTime());
}
/**
* 获取本月的结束时间
*
* @return
*/
public static Date getEndDayOfMonth() {
Calendar calendar = Calendar.getInstance();
calendar.set(getNowYear(), getNowMonth() - 1, 1);
int day = calendar.getActualMaximum(5);
calendar.set(getNowYear(), getNowMonth() - 1, day);
return getDayEndTime(calendar.getTime());
}
/**
* 获取上月的开始时间
*
* @return
*/
public static Date getBeginDayOfLastMonth() {
Calendar calendar = Calendar.getInstance();
calendar.set(getNowYear(), getNowMonth() - 2, 1);
return getDayStartTime(calendar.getTime());
}
/**
* 获取上月的结束时间
*
* @return
*/
public static Date getEndDayOfLastMonth() {
Calendar calendar = Calendar.getInstance();
calendar.set(getNowYear(), getNowMonth() - 2, 1);
int day = calendar.getActualMaximum(5);
calendar.set(getNowYear(), getNowMonth() - 2, day);
return getDayEndTime(calendar.getTime());
}
/**
* 获取本年的开始时间
*
* @return
*/
public static Date getBeginDayOfYear() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, getNowYear());
cal.set(Calendar.MONTH, Calendar.JANUARY);
cal.set(Calendar.DATE, 1);
return getDayStartTime(cal.getTime());
}
/**
* 获取本年的结束时间
*
* @return
*/
public static Date getEndDayOfYear() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, getNowYear());
cal.set(Calendar.MONTH, Calendar.DECEMBER);
cal.set(Calendar.DATE, 31);
return getDayEndTime(cal.getTime());
}
}