Java 8 獲取本(天周月季度年)的開始、結束時間

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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索