Java日期處理類Date詳解
時間的基礎知識
- 時區:整個地球分為二十四時區,每個時區都有自己的本地時間。
- 為了統一起見,使用一個統一的時間,稱為全球標準時間(UTC,Universal Time Coordinated)。
- TC與格林尼治平均時(GMT,Greenwich Mean Time,也翻譯成:格林威治標準時間)差不多一樣
- CST(北京時間),北京時間,China standard Time,中國標準時間。在時區劃分上,屬東八區,比協調世界時早8小時,記為UTC+8。
- 時間戳:自1970年1月1日(08:00:00GMT)至當前時間的總秒數,它也被稱為Unix時間戳(unix Timestamp),廣泛的運用在知識產權保護、合同簽字、金融帳務、電子報價投標、股票交易等方面
- 格式多種:2050-10-3110:11:11、2050/10/3110/10:10年、月、日、周幾等
背景:程序代碼中怎么表示時間呢?我需要獲取當前時間怎么辦
ava.util包提供了Date類來封裝當前的日期和時間
構造函數
1
2
3
4
|
//當前時間 Date() //從1970年1月1日起的毫秒數作為參數 Date( long millisec) |
常見方法
1
2
3
4
5
6
|
//返回自1970年1月1日00:00:00GMT以來此Date對象表示的毫秒數。 long getTime() //調用此方法的Date對象在指定日期之后返回true,否則返回false。 boolean after(Date date) //調用此方法的Date對象在指定日期之前返回true,否則返回false。 boolean before(Date date) |
新版JDK8之時間日期處理類
Java8通過發布新的Date-Time API(JSR310)來進一步加強對日期與時間的處理
新增了很多常見的api,如日期/時間的比較,加減,格式化等
包所在位置 java.time
核心類
LocalDate:不包含具體時間的日期。
LocalTime:不含日期的時間。
LocalDateTime:包含了日期及時間。
LocalDate常用API
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
LocalDate today=LocalDate.now(); system.out.print1n( "今天日期:" +today); //獲取年,月,日,周幾 system.out.print1n( "現在是哪年:" +today.getYear()); system.out.print1n( "現在是哪月:" +today.getMonth()); System.out.print1n( "現在是哪月(數字):" +today.getMonthValue()); System.out.print1n( "現在是幾號:" +today.getDayofMonth()); system.out.print1n( "現在是周幾:" +today.getDayofweek()); //加減年份,加后返回的對象才是修改后的,舊的依舊是舊的LocalDate changeDate=today.plusYears(1); system.out.print1n( "加后是哪年:" +changeDate.getYear()); System.out.print1n( "舊的是哪年:" +today.getYear()); //日期比較 system.out.print1n( "isafter:" +changeDate.isAfter(today)); //getYear()int 獲取當前日期的年份 //getMonth()Month獲取當前日期的月份對象 //getMonthValue()int 獲取當前日期是第幾月 //getDayofweek()Dayofweek 表示該對象表示的日期是星期幾 //getDayofMonth()int 表示該對象表示的日期是這個月第幾天 //getDayofyear()int 表示該對象表示的日期是今年第幾天 //withyear(int year)LocalDate 修改當前對象的年份 //withMonth(int month)LocalDate修改當前對象的月份 //withpayofMonth(int dayofMonth)LocalDate 修改當前對象在當月的日期 //plusYears(long yearsToAdd)Localpate 當前對象增加指定的年份數 //plusMonths(1ong monthsToAdd)LocalDate 當前對象增加指定的月份數 //plusweeks(1ong weeksToAdd)LocalDate 當前對象增加指定的周數 //plusDays(1ong daysToAdd)LocalDate 當前對象增加指定的天數 //minusYears(long yearsTosubtract)LocalDate 當前對象減去指定的年數 //minusMonths(1ong months ToSubtract)LocalDate當前對象減去注定的月數 //minusWeeks(long weeksTosubtract)LocalDate 當前對象減去指定的周數 //minusDays(1ong daysTosubtract)LocalDate當前對象減去指定的天數 //compareTo(ChronoLocalDate other)int 比較當前對象和other對象在時間上的大小,返回值如果為正,則當前對象時間較晚 //isBefore(ChronoLocalDate other)boolean比較當前對象日期是否在other對象日期之前 //isAfter(ChronoLocalDate other)boolean 比較當前對象日期是否在other對象日期之后 //isEqual(ChronoLocalDate other)boolean 比較兩個日期對象是否相等 |
新版JDK8之時間日期格式化
為什么要時間日期做格式化
- 程序打印,或者網頁顯示時間日期格式,用戶有不同的需求,則需要根據一定的規則進行格式化
常用的占位符
- y四位數年份
- M月d日
- h時在
- m分
- S毫秒
JDK8之后:引入線程安全的日期與時
1
2
3
4
5
6
|
LocalDateTime ldt = LocalDateTime.now(); System.out.println(ldt); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String ldtStr = dtf.format(ldt); System.out.println(ldtStr); |
獲取指定的日期時間對象LocalDate Time ldt=LocalDate Time.of(2020,11,11,8,20,30);System.out.println(ldt);
計算日期時間差 java.time.Duration
1
2
3
4
5
6
7
8
9
10
11
|
LocalDateTime today = LocalDateTime.now(); System.out.println(today); LocalDateTime changeDate = LocalDateTime.of( 2020 , 10 , 1 , 10 , 40 , 30 ); System.out.println(changeDate); Duration duration = Duration.between( today,changeDate); //第?二個參數減第?一 個參數 System.out.println(duration.toDays()); //兩個時間差的天數 System.out.println(duration.toHours()); //兩個時間差的小時數 System.out.println(duration.toMinutes()); //兩個時間差的分鐘數 System.out.println(duration.toMillis()); //兩個時間差的毫秒數 System.out.println(duration.toNanos()); //兩個時間差的納秒數 |
總結
到此這篇關于Java核心教程之常見時間日期的文章就介紹到這了,更多相關Java常見時間日期內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/ruan_luqingnian/article/details/113816109