Date
同樣位于java.util包下。
在java中,獲取時(shí)間最簡單的方式就是直接實(shí)例化Date類。
以自定義格式,取當(dāng)前的時(shí)間日期:
Date date = new Date();
SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd :hh:mm:ss");
System.out.println(dateFormat.format(date));
之前可以用Date類來獲取當(dāng)前日期和時(shí)間的結(jié)構(gòu)信息,比如說:
Date date = new Date();
System.out.println(date.toLocaleString());
System.out.println(date.getDay()); // 當(dāng)前星期幾
System.out.println(date.getYear()); // 自從1900之后,經(jīng)過了多少年
System.out.println(date.getMonth()); //當(dāng)年第幾個(gè)月,從0開始
System.out.println(date.getDate()); // 當(dāng)前日
System.out.println(date.getSeconds()); // 當(dāng)前秒
System.out.println(date.getMinutes()); // 當(dāng)前分鐘
System.out.println(date.getHours()); // 當(dāng)前小時(shí)
不過以上API都是屬于廢棄API,看描述是從1.1開始就廢棄掉了可能。
Calendar
Calendar類位于java.util包下,是Java7里比較新的一種獲取時(shí)間的方式。
是專門用來轉(zhuǎn)換特定時(shí)刻和日歷字段之間的日期和時(shí)間。
之前比較常用的如new Date().getHours()
等,已經(jīng)屬于廢棄方法了,官方在文檔里明確推薦使用Calendar類來代為替換。
分別取年月日時(shí)分秒:
Calendar cal=Calendar.getInstance();
int y=cal.get(Calendar.YEAR);
int m=cal.get(Calendar.MONTH);
int d=cal.get(Calendar.DATE);
int h=cal.get(Calendar.HOUR_OF_DAY);
int mi=cal.get(Calendar.MINUTE);
int s=cal.get(Calendar.SECOND);
System.out.println("現(xiàn)在時(shí)刻是"+y+"年"+m+"月"+d+"日"+h+"時(shí)"+mi+"分"+s+"秒");
以自定義格式,取當(dāng)前的時(shí)間日期:
Calendar calendar= Calendar.getInstance();
SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd :hh:mm:ss");
System.out.println(dateFormat.format(calendar.getTime()));
或者直接sout下面的:
new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(Calendar.getInstance().getTime())
注意,format里面的hh是12小時(shí)制,如果想看24小時(shí)制,那用HH
Date/Time API
Java8提供了一個(gè)全新的API,用來替換Java.util.Date
和Java.util.Calendar
。
其提供了多個(gè)類,方便我們操作時(shí)間,包括:
- LocalDate
- LocalTime
- LocalDateTime
- ZonedDateTime
LocalDate
位于java.time包下。
只顯示日期,不顯示時(shí)間,可以使用format來控制格式。
打印當(dāng)前日期:
LocalDate date = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
System.out.println(formatter.format(date)); // 2023-01-16
LocalTime
同樣位于java.time包下。
與LocalDate相反,LocalTime只能獲取時(shí)間,而不能獲取日期。
打印當(dāng)前時(shí)間:
LocalTime time = LocalTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
System.out.println(formatter.format(time)); // 15:42:19
LocalDateTime
同時(shí)獲取日期和時(shí)間,使用方式基本一致。
打印當(dāng)前的日期和時(shí)間:
LocalDateTime dt = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
System.out.println(formatter.format(dt)); // 2023-01-16 15:46:48
ZonedDateTime
獲取時(shí)間和日期的結(jié)構(gòu)化字段
在ZonedDateTime ZonedDateTime = ZonedDateTime.now();
創(chuàng)建之后,可以通過以下方法訪問實(shí)例的日期和時(shí)間字段:
日期和時(shí)間的計(jì)算方法:
功能
獲取標(biāo)準(zhǔn)時(shí)間
可以通過System.currentTimeMillis()
來獲取標(biāo)準(zhǔn)時(shí)間的時(shí)間戳,據(jù)說這個(gè)值是不受時(shí)區(qū)影響的純凈值。暫時(shí)存疑,因?yàn)檫@里我沒驗(yàn)證過。
如:1673861700672
文章來源:http://www.zghlxwxcb.cn/news/detail-499416.html
也可以把時(shí)間戳轉(zhuǎn)換成我們可以理解的正常形式,但是這個(gè)過程中系統(tǒng)會(huì)自動(dòng)加上時(shí)區(qū):文章來源地址http://www.zghlxwxcb.cn/news/detail-499416.html
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date(System.currentTimeMillis());
System.out.println(formatter.format(date));
參考文獻(xiàn)
- java 獲取當(dāng)前時(shí)間的三種方法
- Java如何獲取當(dāng)前日期和時(shí)間?
- JAVA中獲取當(dāng)前時(shí)間的寫法
- calendar的使用。以及如何獲取某月份最后一天的方法
到了這里,關(guān)于Java:時(shí)間日期類的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!