Java 8 獲取本(天周月季度年)的開始、結束時間
Java 8引入了新的Date-Time API(JSR 310)來改進時間、日期的處理。時間和日期的管理一直是最令Java開發者痛苦的問題。java.util.Date和後來的java.util.Calendar一直沒有解決這個問題(甚至令開發者更加迷茫)。java
由於上面這些緣由,誕生了第三方庫Joda-Time,能夠替代Java的時間管理API。Java 8中新的時間和日期管理API深受Joda-Time影響,並吸取了不少Joda-Time的精華。新的java.time包包含了全部關於日期、時間、時區、Instant(跟日期相似可是精確到納秒)、duration(持續時間)和時鐘操做的類。新設計的API認真考慮了這些類的不變性(從java.util.Calendar吸收的教訓),若是某個實例須要修改,則返回一個新的對象。微信
話很少說,直接上代碼
在上以前仍是先簡單的介紹一下哈:不少時候項目中咱們都會遇到獲取特定時間日期的問題,例如:獲取當天、本週、本月、本季度、本年的開始時間月結束時間等。固然使用以前的 java.util 包中的 Date
和 Calendar
類進行計算也是能夠得到的,可是比較的繁瑣,不是難;那麼在 Java 8 的 java.time 包中爲咱們提供了諸如:LocalDate
LocalDateTime
等一系列易用的、操做時間日期的類, 那麼咱們 「何樂而不用」 呢?app
Feature
Java獲取本週的開始時間與結束時間spa
Java獲取本月的開始時間與結束時間.net
Java獲取本季度的開始時間與結束時間設計
Java獲取本年的開始時間與結束時間code
結束語orm
Java獲取本週的開始時間與結束時間
代碼片
.對象
/**
* @Author: umizhang
* @Title: getStartOrEndDayOfMonth
* @Description TODO 獲取本月的第一天或最後一天
* @Date: 2019/7/23 11:50
* @Param: [today, isFirst: true 表示開始時間,false表示結束時間]
* @return: java.lang.String
* @Exception:
*/
public static String getStartOrEndDayOfMonth(LocalDate today, Boolean isFirst){
LocalDate resDate = LocalDate.now();
if (today == null) {
today = resDate;
}
Month month = today.getMonth();
int length = month.length(today.isLeapYear());
if (isFirst) {
resDate = LocalDate.of(today.getYear(), month, 1);
} else {
resDate = LocalDate.of(today.getYear(), month, length);
}
return resDate.toString();
}
Java獲取本月的開始時間與結束時間接口
代碼片
.
/**
* @Author: umizhang
* @Title: getStartOrEndDayOfMonth
* @Description TODO 獲取本月的第一天或最後一天
* @Date: 2019/7/23 11:50
* @Param: [today, isFirst: true 表示開始時間,false表示結束時間]
* @return: java.lang.String
* @Exception:
*/
public static String getStartOrEndDayOfMonth(LocalDate today, Boolean isFirst){
LocalDate resDate = LocalDate.now();
if (today == null) {
today = resDate;
}
Month month = today.getMonth();
int length = month.length(today.isLeapYear());
if (isFirst) {
resDate = LocalDate.of(today.getYear(), month, 1);
} else {
resDate = LocalDate.of(today.getYear(), month, length);
}
return resDate.toString();
}
Java獲取本季度的開始時間與結束時間
代碼片
.
/**
* @Author: umizhang
* @Title: getStartOrEndDayOfQuarter
* @Description TODO 獲取本季度的第一天或最後一天
* @Date: 2019/7/23 13:46
* @Param: [today, isFirst: true 表示開始時間,false表示結束時間]
* @return: java.lang.String
* @Exception:
*/
public static String getStartOrEndDayOfQuarter(LocalDate today, Boolean isFirst){
LocalDate resDate = LocalDate.now();
if (today == null) {
today = resDate;
}
Month month = today.getMonth();
Month firstMonthOfQuarter = month.firstMonthOfQuarter();
Month endMonthOfQuarter = Month.of(firstMonthOfQuarter.getValue() + 2);
if (isFirst) {
resDate = LocalDate.of(today.getYear(), firstMonthOfQuarter, 1);
} else {
resDate = LocalDate.of(today.getYear(), endMonthOfQuarter, endMonthOfQuarter.length(today.isLeapYear()));
}
return resDate.toString();
}
Java獲取本年的開始時間與結束時間
代碼片
.
/**
* @Author: umizhang
* @Title: getStartOrEndOfYear
* @Description TODO 獲取本年的第一天或最後一天
* @Date: 2019/7/23 13:48
* @Param: [today, isFirst: true 表示開始時間,false表示結束時間]
* @return: java.lang.String
* @Exception:
*/
public static String getStartOrEndDayOfYear(LocalDate today, Boolean isFirst){
LocalDate resDate = LocalDate.now();
if (today == null) {
today = resDate;
}
if (isFirst) {
resDate = LocalDate.of(today.getYear(), Month.JANUARY, 1);
} else {
resDate = LocalDate.of(today.getYear(), Month.DECEMBER, Month.DECEMBER.length(today.isLeapYear()));
}
return resDate.toString();
}
結束語
LZ 這裏只作拋磚引玉的事情,更多的功能等你去嘗試!固然 Java 8 中的也就是 java.time 包中的一些列類與接口功能遠遠不止這些,只要運用的恰當,就能在你寫的代碼中如魚得水;不只代碼簡潔漂亮、並且更重要的是能很方便的實現更多的功能!!!
本文分享自微信公衆號 - 一隻藍色猿(umizhang0910)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。