Java使用JodaTime處理時間

簡介html

在Java中處理日期和時間是很常見的需求,基礎的工具類就是咱們熟悉的Date和Calendar,然而這些工具類的api使用並非很方便和強大,因而就誕生了Joda-Time這個專門處理日期時間的庫。在這裏記錄下使用方法,方便往後參考。
api 官網 http://www.joda.org/joda-time/apidocs/index.html?overview-summary.htmlapi

 

引入Maven依賴函數

1 <dependency>
2 <groupId>joda-time</groupId>
3 <artifactId>joda-time</artifactId>
4 <version>2.9.9</version>
5 </dependency>

 

核心類工具

使用最多的五個日期時間類:
- Instant - 不可變的類,用來表示時間軸上一個瞬時的點(時間戳)
- DateTime - 不可變的類,用來替換JDK的Calendar類
- LocalDate - 不可變的類,表示一個本地的日期,而不包含時間部分(沒有時區信息)
- LocalTime - 不可變的類,表示一個本地的時間,而不包含日期部分(沒有時區信息)
- LocalDateTime - 不可變的類,表示一個本地的日期-時間(沒有時區信息)

spa

DateTime的使用.net

DateTime 是JodaTime的核心類,表明時間日期值,其構造方法多樣,便可以使用各類對象構造,亦可使用基本類型構造,核心在於可以肯定在時間軸上的位置。。默認構造器以下所示code

1 DateTime dt = new DateTime();

其餘構造函數,可以使用不一樣的構造函數快速獲取DateTime對象orm

1 DateTime(int year, int monthOfYear, int dayOfMonth, int hourOfDay, int minuteOfHour) 2 DateTime(int year, int monthOfYear, int dayOfMonth, int hourOfDay, int minuteOfHour, int secondOfMinute) 3 DateTime(int year, int monthOfYear, int dayOfMonth, int hourOfDay, int minuteOfHour, int secondOfMinute, int millisOfSecond) 4 DateTime(long instant) 5 DateTime(Object instant)

還有一種方法就是使用靜態方法來獲取DateTime對象htm

1 // 獲取當前的DateTime
2 DateTime now = DateTime.now(); 3 
4 // 獲取指定String值的DateTime
5 DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"); 6 DateTime d3 = DateTime.parse("2019-03-09 11:12:55", formatter);

 

DateTime中的經常使用屬性值獲取方法對象

 1 getCenturyOfEra() 返回世紀單位(int)  2 getYearOfCentury() 返回世紀年份(int)  3 getYear() 返回年(int)  4 getWeekyear() 返回對應年中週數(int)  5 getMonthOfYear() 返回對應年的月數(int)  6 getDayOfYear() 返回對應年中天數(int)  7 getDayOfMonth() 返回對應月份中天數(int)  8 getDayOfWeek() 返回對應星期中天數(int)  9 getHourOfDay() 返回對應天中的小時(int) 10 getMinuteOfDay() 返回對應天中的分鐘數(int) 11 getMinuteOfHour() 返回對應小時中的分鐘數(int) 12 getSecondOfDay() 返回對應天中的秒數(int) 13 getSecondOfMinute() 返回對應分鐘中的秒數(int) 14 getMillis() 返回毫秒數(int) 15 getMillisOfDay() 返回對應天中的毫秒(int) 16 getMillisOfSecond() 返回對應秒中的毫秒(int) 17 getHourOfDay() 返回對應天中的小時(int) 18 toString(String pattern) 返回一個規定格式的String 19 
20 // demo 21 // y:年,M:月,d:日,H:時,m:分,s:秒,E:星期
22 DateTime now = DateTime.now(); 23 System.out.println(now.toString("yyyy/MM/dd HH:mm:ss EE"));

 

DateTime中的經常使用方法

 1 1. plus/minus開頭的方法(好比:plusDay, minusMonths):用來返回在DateTime實例上增長或減小一段時間後的實例  2 plus(long duration) 增長指定毫秒數並返回  3 plusYears(int years) 增長指定年份並返回  4 plusMonths(int months) 增長指定月份並返回  5 plusWeeks(int weeks) 增長指定星期並返回  6 plusDays(int days) 增長指定天數並返回  7 plusHours(int hours) 增長指定小時並返回  8 plusMinutes(int minutes) 增長指定分鐘並返回  9 plusSeconds(int seconds) 增長指定秒數並返回 10 plusMillis(int millis) 增長指定毫秒並返回 -與之相反的是minus前綴的 plus是增長 minus是減小 11 
12 2. with開頭的方法:用來返回在DateTime實例更新指定日期單位後的實例 13 withCenturyOfEra(int centuryOfEra) 更新時間世紀單位並返回 14 withYearOfCentury(int yearOfCentury)更新世紀年並返回 15 withYear(int year) 更新時間年並返回 16 withWeekyear(int weekyear) 更新時間週數並返回 17 withMonthOfYear(int monthOfYear)更新時間月份並返回 18 withDayOfYear(int dayOfYear) 更新時間天數並返回 19 withDayOfMonth(int dayOfMonth) 更新時間天數並返回 20 withDayOfWeek(int dayOfWeek) 更新時間天數並返回 21 withHourOfDay(int hour) 更新時間小時並返回 22 withMinuteOfHour(int minute) 更新時間分鐘並返回 23 withSecondOfMinute(int second) 更新時間秒數並返回 24 withMillisOfSecond(int millis) 更新時間毫秒並返回 25 withMillisOfDay(int millis) 更新時間毫秒並返回 26 withTimeAtStartOfDay() 獲取當天最先時間 27 
28 3. 判斷DateTime對象大小狀態的一些操做方法 29 compareTo(DateTime d) 比較兩時間大小 時間大於指定時間返回 1 時間小於指定時間返回-1 相等返回0 30 equals(DateTime d) 比較兩時間是否相等 31 isAfter(long instant) 判斷時間是否大於指定時間 32 isAfterNow() 判斷時間是否大於當前時間 33 isBefore(long instant) 判斷時間是否小於指定時間 34 isBeforeNow() 判斷時間是否小於當前時間 35 isEqual(long instant) 判斷時間是否等於指定時間 36 isEqualNow() 判斷時間是否等於當前時間 37 
38 4. jdk date互轉 39 DateTime dt = new DateTime(new Date()); jdk的date轉換爲DateTime 40 Date jdkDate = dt.toDate() 轉換爲jdk的date

 

LocalDate的使用

LocalDate只處理年月日

默認構造器

1 LocalDate(int year, int monthOfYear, int dayOfMonth) 2 LocalDate(long instant)

方法跟DateTime方法相似,就不單獨整理了,能夠去api查看詳細方法

其餘拓展方法

 1 daysBetween(ReadableInstant start, ReadableInstant end) 獲取兩日期相差的天數  2 hoursBetween(ReadableInstant start, ReadableInstant end) 獲取兩日期相差的小時數  3 minutesBetween(ReadableInstant start, ReadableInstant end) 獲取兩日期相差的分鐘數  4 monthsBetween(ReadableInstant start, ReadableInstant end) 獲取兩日期相差的月數  5 secondsBetween(ReadableInstant start, ReadableInstant end) 獲取兩日期相差的秒數  6 weeksBetween(ReadableInstant start, ReadableInstant end) 獲取兩日期相差的週數  7 yearsBetween(ReadableInstant start, ReadableInstant end) 獲取兩日期相差的年數  8 
 9 // demo
10 LocalDate start = new LocalDate(); 11 LocalDate end = new LocalDate().minusDays(1); 12 System.out.println(Days.daysBetween(start,end).getDays());

 

 

參考:https://blog.csdn.net/psh18513234633/article/details/79408096

相關文章
相關標籤/搜索