日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Java工具類——日期相關(guān)的類

在日常的開(kāi)發(fā)工作當(dāng)中,我們經(jīng)常需要用到日期相關(guān)的類(包括日期類已經(jīng)處理日期的類),所以,我就專門整理了一篇關(guān)于日期相關(guān)的類,希望可以幫助到大家。

創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)營(yíng)銷推廣、網(wǎng)站重做改版、清河網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5開(kāi)發(fā)、商城系統(tǒng)網(wǎng)站開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為清河等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

一、日期類介紹

在 Java 里面,操作日期的類主要有以下幾個(gè)類:

  • 工具類所屬包繼承關(guān)系實(shí)現(xiàn)接口Date類java.util包,需要導(dǎo)包默認(rèn)繼承ObjectSerializable, Cloneable,
  • ComparableSimpleDateFormat類java.text包,需要導(dǎo)包繼承DateFormatSerializable, CloneableCalendar類java.util包,需要導(dǎo)包默認(rèn)繼承ObjectSerializable, Cloneable, Comparable

二、Date類

這是最基礎(chǔ)的一個(gè)日期類,其中Date類重名的有4個(gè)相關(guān)的類,這四個(gè)類所屬的包都不相同,這里我們講的是位于java.util包下的 Date 類。

1. 構(gòu)造方法

Date 類有6個(gè)構(gòu)造方法,其中后面5個(gè)帶有 @Deprecated 注解的都已經(jīng)廢棄了(不推薦用),主要用的是前面2個(gè)構(gòu)造方法。

 
 
 
 
  1. public Date() 
 
 
 
 
  1. public Date(long date) 
 
 
 
 
  1. @Deprecated 
  2. public Date(String s) 
 
 
 
 
  1. @Deprecated 
  2. public Date(int year, int month, int date) 
 
 
 
 
  1. @Deprecated 
  2. public Date(int year, int month, int date, int hrs, int min) 
 
 
 
 
  1. @Deprecated 
  2. public Date(int year, int month, int date, int hrs, int min, int sec) 

既然有構(gòu)造方法,其實(shí)我們可以通過(guò)new關(guān)鍵字實(shí)例化對(duì)象來(lái)獲取時(shí)間,通過(guò)源碼我們可以發(fā)現(xiàn),無(wú)參構(gòu)造方法其實(shí)是用了 System.currentTimeMillis() 方法獲取當(dāng)前系統(tǒng)時(shí)間然后通過(guò)方法調(diào)用將此時(shí)間傳遞給了 long 型有參方法進(jìn)行私有成員變量賦值。

 
 
 
 
  1. public Date() { 
  2.     this(System.currentTimeMillis()); 
 
 
 
 
    ss="dp-xml">
  1. ss="alt">//返回當(dāng)前系統(tǒng)時(shí)間與計(jì)算機(jī)元年()之間的毫秒值的差值 
  2. //計(jì)算機(jī)元年:1970-1-1 00:00:00 
  3. ss="alt">//中國(guó)時(shí)間差8個(gè)小時(shí) 
  4. long ss="attribute">l = ss="attribute-value">System.currentTimeMillis(); 
  5. ss="alt">System.out.println(l);//1587349600847 

我們可以看到輸出 Date 輸出的格式是一個(gè)很奇怪的格式,不應(yīng)該是 hashCode碼 嗎?其實(shí)不是,因?yàn)?Date 類重寫了 Object 的toString()方法,然后日期的格式是根據(jù)美國(guó)人的格式來(lái)命名輸出的,所以有點(diǎn)奇怪。

 
 
 
 
    ss="dp-xml">
    • ss="alt">//輸出格式叫格格林威治時(shí)間格式 
    • Date ss="attribute">date = ss="attribute-value">new Date(); 
    • ss="alt">System.out.println(date);//Mon Apr 20 10:33:49 CST 2020 
    • Date ss="attribute">time = ss="attribute-value">new Date(""); 

2. 常用方法

Date 類里面的方法也大部分都是廢棄的,不建議使用的,所以就介紹幾個(gè)常用的方法

  • before()方法,判斷一個(gè)時(shí)間是否在另外一個(gè)時(shí)間之前,返回值是boolean類型的。
  •      
         
         
         
      ss="dp-xml">
    1. ss="alt">Date ss="attribute">date1 = ss="attribute-value">new Date(1587350029179L);//前面時(shí)間 
    2. Date ss="attribute">date2 = ss="attribute-value">new Date(1587350029192L);//后面時(shí)間 
    3. ss="alt">boolean ss="attribute">before = ss="attribute-value">date1.before(date2);//判斷date1的時(shí)間是否在date2之前 
    4. System.out.println(before);//true 

    • after()方法,判斷一個(gè)時(shí)間是否在另外一個(gè)時(shí)間之后,返回值是boolean類型的。
            
            
            
            
      ss="dp-xml">
    1. ss="alt">Date ss="attribute">date1 = ss="attribute-value">new Date(1587350029179L);//前面時(shí)間 
    2. Date ss="attribute">date2 = ss="attribute-value">new Date(1587350029192L);//后面時(shí)間 
    3. ss="alt">boolean ss="attribute">after = ss="attribute-value">date1.after(date2);//判斷date1的時(shí)間是否在date2之后 
    4. System.out.println(after);//false 

三、日期格式化類—SimpleDateFormat類

現(xiàn)在我們通過(guò)上面講的日期類,可以操作時(shí)間了,但是時(shí)間的輸出格式是格林威治時(shí)間,時(shí)間格式很不直觀,而且還很奇怪,那么有沒(méi)有什么辦法可以去上輸出的時(shí)間變成我們常見(jiàn)的年月日時(shí)分秒的時(shí)間格式呢?答案當(dāng)然是可以,Jdk 給我們提供了操作時(shí)間格式的工具類 DateFormat,但是我們看源碼發(fā)現(xiàn),如圖所示

       
       
       
       
    ss="dp-xml">
  1. ss="alt">public abstract class DateFormat extends Format{} 

此類其實(shí)是一個(gè)抽象類,我們都知道,抽象類是不能通過(guò)構(gòu)造方法創(chuàng)建對(duì)象,不能實(shí)例化的,通俗的講就是不能做事情的,那么我們可以找抽象類的子類,然后幫我們?nèi)ジ袷交疍ate日期,這個(gè)類就是SimpleDateFormat類。

1. 構(gòu)造方法

SimpleDateFormat 類有4個(gè)構(gòu)造方法,如下方代碼:

       
       
       
       
    ss="dp-xml">
  1. ss="alt">public SimpleDateFormat(){} 
       
       
       
       
    ss="dp-xml">
  1. ss="alt">public SimpleDateFormat(String pattern){} 
       
       
       
       
    ss="dp-xml">
  1. ss="alt">public SimpleDateFormat(String pattern, Locale locale){} 
       
       
       
       
    ss="dp-xml">
  1. ss="alt">public SimpleDateFormat(String pattern, DateFormatSymbols formatSymbols){} 

下面這張圖表示了日期的模式,其中大寫的M表示一年中的第幾月,小寫的m表示時(shí)分秒的分;大寫的D是一年當(dāng)中的第幾天,小寫的d是一個(gè)月中的第幾天;大寫的H表示Hour in day (0-23),小寫的h Hour in am/pm (1-12);大寫的S表示毫秒,小寫的s表示秒,每個(gè)具體的含義可以參考下圖:


 

 

2. 常用方法

  • format()方法,按照指定的格式模式格式化日期,返回一個(gè)日期字符串
  •           
              
              
              
      ss="dp-xml">
    1. ss="alt">DateFormat ss="attribute">sdf1 = ss="attribute-value">new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    2. System.out.println(sdf1.format(new Date()));//2020-04-20 11:40:18 

    • parse()方法,利用給定的參數(shù)-日期字符串來(lái)轉(zhuǎn)成時(shí)間格式,返回Date對(duì)象。
                
                
                
                
      ss="dp-xml">
    1. ss="alt">DateFormat ss="attribute">sdf1 = ss="attribute-value">new SimpleDateFormat("yyyy-MM-dd"); 
    2. String ss="attribute">dateStr = ss="attribute-value">"2012-10-20"; 
    3. ss="alt">Date ss="attribute">parse = ss="attribute-value">null; 
    4. try { 
    5. ss="alt">  ss="attribute">parse = ss="attribute-value">sdf1.parse(dateStr); 
    6.   System.out.println(parse);//Sat Oct 20 00:00:00 CST 2012 
    7. ss="alt">} catch (ParseException e) { 
    8.   e.printStackTrace(); 
    9. ss="alt">} 

四、Calendar類

由于 Date 類里面的很多方法都是廢棄了的(JDK不建議我們使用),Date 不能只操作年或月或日,所以就出現(xiàn)了Calendar 類,Calendar英文單詞是日歷的意思,Calendar 類雖然也是一個(gè)抽象類,但是可以 getInstance()方法獲得 Calendar 對(duì)象,

           
           
           
           
    ss="dp-xml">
  1. ss="alt">public abstract class Calendar implements Serializable, Cloneable, Comparabless="tag">Calendarss="tag">> {} 

其實(shí)你可以這樣理解,Calendar類是Date類的加強(qiáng)版(升級(jí)版),Date類可以做的事情,Calendar類都能做。

1. 構(gòu)造方法

Calendar類的兩個(gè)構(gòu)造方法都是protected關(guān)鍵字修飾的,是訪問(wèn)不到的,只有子類才可以訪問(wèn)

              
              
              
              
    ss="dp-xml">
  1. ss="alt">protected Calendar(){} 
              
              
              
              
    ss="dp-xml">
  1. ss="alt">protected Calendar(TimeZone zone, Locale aLocale){} 

2. 常用方法

  • getInstance()方法,一般通過(guò)此方法創(chuàng)建Calendar對(duì)象,該方法的作用是獲取當(dāng)前系統(tǒng)時(shí)間的Calendar對(duì)象。
  •                
                   
                   
                   
      ss="dp-xml">
    1. ss="alt">Calendar ss="attribute">calendar = ss="attribute-value">Calendar.getInstance(); 

    • setTime()方法,使用給定的Date設(shè)置日歷的時(shí)間。
    • getTime()方法,獲取時(shí)間日期,返回一個(gè)Date
                     
                     
                     
                     
      ss="dp-xml">
    1. ss="alt">Calendar ss="attribute">calendar = ss="attribute-value">Calendar.getInstance(); 
    2. System.out.println(calendar.getTime());//Mon Apr 20 13:48:10 CST 2020 

    • get()方法,獲取年月日時(shí)分秒單項(xiàng)日期信息。

 

getTimeZone()方法,獲取時(shí)區(qū)操作對(duì)象

                 
                 
                 
                 
    ss="dp-xml">
  1. ss="alt">Calendar ss="attribute">calendar = ss="attribute-value">Calendar.getInstance(); 
  2. TimeZone ss="attribute">timeZone = ss="attribute-value">calendar.getTimeZone(); 
  3. ss="alt">System.out.println(timeZone.getID());//Asia/Shanghai 
  4. System.out.println(timeZone.getDisplayName());//中國(guó)標(biāo)準(zhǔn)時(shí)間 

 本文授權(quán)轉(zhuǎn)載自公眾號(hào)「良許Linux」。良許,世界500強(qiáng)外企Linux開(kāi)發(fā)工程師,公眾號(hào)里分享大量Linux干貨,歡迎關(guān)注!

 

 

 


當(dāng)前名稱:Java工具類——日期相關(guān)的類
文章路徑:http://www.dlmjj.cn/article/djodjjd.html