溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何在Java中對時間日期進行處理

發(fā)布時間:2021-02-18 14:07:36 來源:億速云 閱讀:179 作者:Leah 欄目:開發(fā)技術(shù)

如何在Java中對時間日期進行處理?針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

Java日期處理類Date詳解

時間的基礎(chǔ)知識

  • 時區(qū):整個地球分為二十四時區(qū),每個時區(qū)都有自己的本地時間。

  • 為了統(tǒng)一起見,使用一個統(tǒng)一的時間,稱為全球標準時間(UTC,Universal Time Coordinated)。

  • TC與格林尼治平均時(GMT,Greenwich Mean Time,也翻譯成:格林威治標準時間)差不多一樣

  • CST(北京時間),北京時間,China standard Time,中國標準時間。在時區(qū)劃分上,屬東八區(qū),比協(xié)調(diào)世界時早8小時,記為UTC+8。

  • 時間戳:自1970年1月1日(08:00:00GMT)至當(dāng)前時間的總秒數(shù),它也被稱為Unix時間戳(unix Timestamp),廣泛的運用在知識產(chǎn)權(quán)保護、合同簽字、金融帳務(wù)、電子報價投標、股票交易等方面

  • 格式多種:2050-10-3110:11:11、2050/10/3110/10:10年、月、日、周幾等

背景:程序代碼中怎么表示時間呢?我需要獲取當(dāng)前時間怎么辦

ava.util包提供了Date類來封裝當(dāng)前的日期和時間

構(gòu)造函數(shù)

//當(dāng)前時間
Date()
//從1970年1月1日起的毫秒數(shù)作為參數(shù)
Date(long millisec)

常見方法

//返回自1970年1月1日00:00:00GMT以來此Date對象表示的毫秒數(shù)。
long getTime()
//調(diào)用此方法的Date對象在指定日期之后返回true,否則返回false。
boolean after(Date date)
//調(diào)用此方法的Date對象在指定日期之前返回true,否則返回false。
boolean before(Date date)

新版JDK8之時間日期處理類

Java8通過發(fā)布新的Date-Time API(JSR310)來進一步加強對日期與時間的處理

新增了很多常見的api,如日期/時間的比較,加減,格式化等

包所在位置 java.time

核心類

LocalDate:不包含具體時間的日期。
LocalTime:不含日期的時間。
LocalDateTime:包含了日期及時間。

LocalDate常用API

 LocalDate today=LocalDate.now();
 system.out.print1n("今天日期:"+today);
 
//獲取年,月,日,周幾
system.out.print1n("現(xiàn)在是哪年:"+today.getYear());
system.out.print1n("現(xiàn)在是哪月:"+today.getMonth());
System.out.print1n("現(xiàn)在是哪月(數(shù)字):"+today.getMonthValue());
System.out.print1n("現(xiàn)在是幾號:"+today.getDayofMonth());
system.out.print1n("現(xiàn)在是周幾:"+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 獲取當(dāng)前日期的年份
//getMonth()Month獲取當(dāng)前日期的月份對象
//getMonthValue()int 獲取當(dāng)前日期是第幾月
//getDayofweek()Dayofweek 表示該對象表示的日期是星期幾
//getDayofMonth()int 表示該對象表示的日期是這個月第幾天
//getDayofyear()int 表示該對象表示的日期是今年第幾天
//withyear(int year)LocalDate 修改當(dāng)前對象的年份
//withMonth(int month)LocalDate修改當(dāng)前對象的月份
//withpayofMonth(int dayofMonth)LocalDate 修改當(dāng)前對象在當(dāng)月的日期
//plusYears(long yearsToAdd)Localpate 當(dāng)前對象增加指定的年份數(shù)
//plusMonths(1ong monthsToAdd)LocalDate 當(dāng)前對象增加指定的月份數(shù)
//plusweeks(1ong weeksToAdd)LocalDate 當(dāng)前對象增加指定的周數(shù)
//plusDays(1ong daysToAdd)LocalDate 當(dāng)前對象增加指定的天數(shù)
//minusYears(long yearsTosubtract)LocalDate 當(dāng)前對象減去指定的年數(shù)
//minusMonths(1ong months ToSubtract)LocalDate當(dāng)前對象減去注定的月數(shù)
//minusWeeks(long weeksTosubtract)LocalDate 當(dāng)前對象減去指定的周數(shù)
//minusDays(1ong daysTosubtract)LocalDate當(dāng)前對象減去指定的天數(shù)
//compareTo(ChronoLocalDate other)int 比較當(dāng)前對象和other對象在時間上的大小,返回值如果為正,則當(dāng)前對象時間較晚
//isBefore(ChronoLocalDate other)boolean比較當(dāng)前對象日期是否在other對象日期之前
//isAfter(ChronoLocalDate other)boolean 比較當(dāng)前對象日期是否在other對象日期之后
//isEqual(ChronoLocalDate other)boolean 比較兩個日期對象是否相等

新版JDK8之時間日期格式化

為什么要時間日期做格式化

  • 程序打印,或者網(wǎng)頁顯示時間日期格式,用戶有不同的需求,則需要根據(jù)一定的規(guī)則進行格式化

常用的占位符

  • y四位數(shù)年份

  • M月d日

  • h時在

  • m分

  • S毫秒

JDK8之后:引入線程安全的日期與時

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

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);//第?二個參數(shù)減第?一
個參數(shù)
System.out.println(duration.toDays());//兩個時間差的天數(shù)
System.out.println(duration.toHours());//兩個時間差的小時數(shù)
System.out.println(duration.toMinutes());//兩個時間差的分鐘數(shù)
System.out.println(duration.toMillis());//兩個時間差的毫秒數(shù)
System.out.println(duration.toNanos());//兩個時間差的納秒數(shù)

關(guān)于如何在Java中對時間日期進行處理問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI