java獲取當(dāng)日、本周、本月、本年的實(shí)現(xiàn)方式
1、使用 LocalDateTime
最后的格式需要自己轉(zhuǎn)換一下
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());
// 當(dāng)日
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);
// 打印結(jié)果
System.out.println("當(dāng)日開始時(shí)間: " + startOfDay);
System.out.println("當(dāng)日結(jié)束時(shí)間: " + endOfDay);
System.out.println("本周開始時(shí)間: " + startOfWeekDateTime);
System.out.println("本周結(jié)束時(shí)間: " + endOfWeekDateTime);
System.out.println("本月開始時(shí)間: " + startOfMonth);
System.out.println("本月結(jié)束時(shí)間: " + endOfMonth);
System.out.println("本年開始時(shí)間: " + startOfYear);
System.out.println("本年結(jié)束時(shí)間: " + endOfYear);
}
}2、使用 Calendar
import java.sql.Timestamp;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class DateUtil {
/**
* 獲取當(dāng)天開始時(shí)間
*
* @return
*/
public static Date getDayBegin() {
Calendar cal = Calendar.getInstance();
//0點(diǎn)
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();
}
/**
* 獲取當(dāng)天結(jié)束時(shí)間
*
* @return
*/
public static Date getDayEnd() {
Calendar cal = Calendar.getInstance();
//23點(diǎn)
cal.set(Calendar.HOUR_OF_DAY, 23);
//59分
cal.set(Calendar.MINUTE, 59);
//59秒
cal.set(Calendar.SECOND, 59);
return cal.getTime();
}
/**
* 獲取昨天開始時(shí)間
*
* @return
*/
public static Date getBeginDayOfYesterday() {
Calendar cal = Calendar.getInstance();
//當(dāng)天開始時(shí)間
cal.setTime(getDayBegin());
//當(dāng)天月份天數(shù)減1
cal.add(Calendar.DAY_OF_MONTH, -1);
return cal.getTime();
}
/**
* 獲取昨天結(jié)束時(shí)間
*
* @return
*/
public static Date getEndDayOfYesterday() {
Calendar cal = Calendar.getInstance();
//當(dāng)天結(jié)束時(shí)間
cal.setTime(getDayEnd());
//當(dāng)天月份天數(shù)減1
cal.add(Calendar.DAY_OF_MONTH, -1);
return cal.getTime();
}
/**
* 獲取明天開始時(shí)間
*
* @return
*/
public static Date getBeginDayOfTomorrow() {
Calendar cal = Calendar.getInstance();
//當(dāng)天開始時(shí)間
cal.setTime(getDayBegin());
//當(dāng)天月份天數(shù)加1
cal.add(Calendar.DAY_OF_MONTH, 1);
return cal.getTime();
}
/**
* 獲取明天結(jié)束時(shí)間
*
* @return
*/
public static Date getEndDayOfTomorrow() {
Calendar cal = Calendar.getInstance();
//當(dāng)天結(jié)束時(shí)間
cal.setTime(getDayEnd());
//當(dāng)天月份天數(shù)加1
cal.add(Calendar.DAY_OF_MONTH, 1);
return cal.getTime();
}
/**
* 獲取某個(gè)日期的開始時(shí)間
*
* @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());
}
/**
* 獲取某個(gè)日期的結(jié)束時(shí)間
*
* @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());
}
/**
* 獲取本周的開始時(shí)間
*
* @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());
}
/**
* 獲取本周的結(jié)束時(shí)間
*
* @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);
}
/**
* 獲取上周開始時(shí)間
*/
@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());
}
/**
* 獲取上周的結(jié)束時(shí)間
*
* @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;
}
/**
* 獲取本月的開始時(shí)間
*
* @return
*/
public static Date getBeginDayOfMonth() {
Calendar calendar = Calendar.getInstance();
calendar.set(getNowYear(), getNowMonth() - 1, 1);
return getDayStartTime(calendar.getTime());
}
/**
* 獲取本月的結(jié)束時(shí)間
*
* @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());
}
/**
* 獲取上月的開始時(shí)間
*
* @return
*/
public static Date getBeginDayOfLastMonth() {
Calendar calendar = Calendar.getInstance();
calendar.set(getNowYear(), getNowMonth() - 2, 1);
return getDayStartTime(calendar.getTime());
}
/**
* 獲取上月的結(jié)束時(shí)間
*
* @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());
}
/**
* 獲取本年的開始時(shí)間
*
* @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());
}
/**
* 獲取本年的結(jié)束時(shí)間
*
* @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());
}
}總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring編程式和聲明式事務(wù)實(shí)例講解小結(jié)
這篇文章主要介紹了Spring編程式和聲明式事務(wù)實(shí)例講解小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Java實(shí)現(xiàn)一個(gè)簡(jiǎn)單的定時(shí)器代碼解析
這篇文章主要介紹了Java實(shí)現(xiàn)一個(gè)簡(jiǎn)單的定時(shí)器代碼解析,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12
移動(dòng)開發(fā)Spring Boot外置tomcat教程及解決方法
這篇文章主要介紹了移動(dòng)開發(fā)SpringBoot外置tomcat教程,需要的朋友可以參考下2017-11-11
SpringCloud中數(shù)據(jù)認(rèn)證加密的方法總結(jié)
在當(dāng)今分布式系統(tǒng)的日益復(fù)雜和信息傳遞的廣泛網(wǎng)絡(luò)化環(huán)境中,數(shù)據(jù)的加密和認(rèn)證作為保障信息傳遞安全的關(guān)鍵手段,Spring?Cloud,作為一套構(gòu)建微服務(wù)架構(gòu)的強(qiáng)大框架,提供了多種靈活而強(qiáng)大的數(shù)據(jù)加密和認(rèn)證方式,本文給大家總結(jié)了SpringCloud數(shù)據(jù)認(rèn)證加密的方法2024-03-03
實(shí)例講解Java編程中數(shù)組反射的使用方法
這篇文章主要介紹了Java編程中數(shù)組反射的使用方法,通過編寫數(shù)組反射工具類可以重用許多基礎(chǔ)代碼,減少對(duì)類型的判斷過程,需要的朋友可以參考下2016-04-04
Java動(dòng)態(tài)數(shù)組添加數(shù)據(jù)的方法與應(yīng)用示例
這篇文章主要介紹了Java動(dòng)態(tài)數(shù)組添加數(shù)據(jù)的方法,結(jié)合實(shí)例形式詳細(xì)分析了Java動(dòng)態(tài)數(shù)組的創(chuàng)建、添加、查找、打印等相關(guān)操作技巧,需要的朋友可以參考下2019-11-11
Spring注解之@FunctionalInterface詳解(函數(shù)式接口)
@FunctionalInterface是Java8注解,標(biāo)識(shí)僅含一個(gè)抽象方法的函數(shù)式接口,支持Lambda,編譯檢查確保符合定義,提升可讀性,非強(qiáng)制,繼承方法需注意計(jì)數(shù),Object方法不計(jì)入2025-09-09

