程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java中罕見的日期操作(取值、轉換、加減、比擬)

Java中罕見的日期操作(取值、轉換、加減、比擬)

編輯:關於JAVA

Java中罕見的日期操作(取值、轉換、加減、比擬)。本站提示廣大學習愛好者:(Java中罕見的日期操作(取值、轉換、加減、比擬))文章只能為提供參考,不一定能成為您想要的結果。以下是Java中罕見的日期操作(取值、轉換、加減、比擬)正文


Java 的開辟進程中免不了與 Date 類型糾纏,預備總結一下項目常常應用的日期相干操作,JDK 版本 1.7,假如可以或許贊助年夜家勤儉那末幾分鐘起身運動一下,去泡杯咖啡,便是極好的,嘿嘿。固然,我只供給了可行的處理計劃,其實不包管是最好理論,迎接評論辯論。

1. 日期取值

在舊版本 JDK 的時期,有很多代碼中日期取值應用了 java.util.Date 類,然則因為 Date 類未便於完成國際化,其實從 JDK1.1 開端,就更推舉應用 java.util.Calendar 類停止時光和日期方面的處置。這裡便不引見 Date 類的操作,讓我們直奔主題吧,若何應用 Calendar 類獲得如今的日期時光。

因為 Calendar 的結構器辦法被 protected 潤飾,所以我們會經由過程 API 中供給的 getInstance 辦法來創立 Calendar 對象。

 //有多個重載辦法創立 Calendar 對象
 Calendar now = Calendar.getInstance(); //默許
 //指准時區和地域,也能夠只輸出個中一個參數
 Calendar now = Calendar.getInstance(timeZone, locale); 

然後我們便可以經由過程該對象獲得以後的各類時光參數了。

int year = now.get(Calendar.YEAR); //,以後年份
int month = now.get(Calendar.MONTH) + ; //,以後月,留意加 
int day = now.get(Calendar.DATE); //,以後日Date date = now.getTime(); //直接獲得一個 Date 類型的日期 

要獲得其他類型的時光數據僅需修正 now.get() 內的參數,除以上三種參數,其他經常使用參數以下:

 •Calendar.DAY_OF_MONTH:日期,和 Calendar.DATE 雷同
 •Calendar.HOUR:12 小時制的小時數
 •Calendar.HOUR_OF_DAY:24小時制的小時數
 •Calendar.MINUTE:分鐘
 •Calendar.SECOND:秒
 •Calendar.DAY_OF_WEEK:周幾

除獲得時光數據,我們也能夠經由過程 Calendar 對象設置各類時光參數。

//只設定某個字段的值
 // public final void set(int field, int value)
 now.set(Calendar.YEAR, );
 //設定年代日或許年代日時分或年代日時分秒
 // public final void set(int year, int month, int date[, int hourOfDay, int minute, int second])
 now.set(, , [, , , ]);
 //直接傳入一個 Date 類型的日期
 // public final void setTime(Date date)
 now.set(date); 

留意:

 •當設置了時光參數後,其他相干的數值都邑從新盤算,例如當你把日期設為 11 號後,周幾就會尴尬刁難應變更。
 •取得的月份加 1 才是現實月份。
 •在 Calendar 類中,周日是 1,周一是 2,以此類推。

2. 日期轉換

聊完日期取值,接上去聊聊日期轉換,轉換普通是 Date 型日期與 String 型字符串之間的互相轉換,我重要應用 java.text.SimpleDateFormat 停止轉換操作。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 try {
   //日期轉字符串
   Calendar calendar = Calendar.getInstance();
   Date date = calendar.getTime();
   String dateStringParse = sdf.format(date);
   //字符串轉日期
   String dateString = "-- ::";
   Date dateParse = sdf.parse(dateString);
 } catch (ParseException e) {
   e.printStackTrace();   
 } 

留意:

 •創立 SimpleDateFormat 對象時必需指定轉換格局。

 •轉換格局辨別年夜小寫,yyyy 代表年份,MM 代表月份,dd 代表日期,HH 代表 24 進制的小時,hh 代表 12 進制的小時,mm 代表分鐘,ss 代表秒。

3. 日期加減

平日來講,我們會對日期做兩種加減操作:

 •以某個日期為基准,盤算其幾天前/後、幾年前/後,或許其他時光單元前後的日期

 //依據如今時光盤算
 Calendar now = Calendar.getInstance(); 
 now.add(Calendar.YEAR, ); //如今時光的年後
 now.add(Calendar.YEAR, -); //如今時光的年前
 //依據某個特定的時光 date (Date 型) 盤算
 Calendar specialDate = Calendar.getInstance();
 specialDate.setTime(date); //留意在此處將 specialDate 的值改成特定日期
 specialDate.add(Calendar.YEAR, ); //特准時間的年後
 specialDate.add(Calendar.YEAR, -); //特准時間的年前 

留意應用了 Calendar 對象的 add 辦法,可以更改 Calendar.YEAR 為隨意率性時光單元字段,完成各類時光單元下的日期盤算。

•盤算兩個時光的距離,例如盤算 2016 年 1 月 1 日間隔如今有若干天。

 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 String dateString = "-- ::";
 Calendar calendar = Calendar.getInstance();
 long nowDate = calendar.getTime().getTime(); //Date.getTime() 取得毫秒型日期
 try {
     long specialDate = sdf.parse(dateString).getTime();
     long betweenDate = (specialDate - nowDate) / ( * * * ); //盤算距離若干天,則除以毫秒到天的轉換公式
     System.out.print(betweenDate);
 } catch (ParseException e) {
     e.printStackTrace();
 }  

4. 日期比擬

翻看本身之前的代碼,發明每當停止日期比擬的操作時,總會先將日期轉為 “yyyyMMdd” 格局的字符串,再將字符串轉為數值,然後比擬數值年夜小。哈哈,一個簡略的比擬操作,卻要寫十幾行代碼,有點目不忍視。如今得說說准確地日期比擬姿態是怎樣樣的。

日期比擬普通有兩種辦法,關於 java.util.Date 或許 java.util.Calendar 都是通用的。一種是經由過程 after() 與 before() 辦法停止比擬,一種是經由過程 compareTo() 辦法停止比擬。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString_01 = "2016-01-01 11:11:11";
String dateString_02 = "2016-01-02 11:11:11";
try {
    Date date_01 = sdf.parse(dateString_01);
    Date date_02 = sdf.parse(dateString_02);
    System.out.println(date_01.before(date_02)); //true,當 date_01 小於 date_02 時,為 true,不然為 false
    System.out.println(date_02.after(date_01)); //true,當 date_02 年夜於 date_01 時,為 true,不然為 false
    System.out.println(date_01.compareTo(date_02)); //-1,當 date_01 小於 date_02 時,為 -1
    System.out.println(date_02.compareTo(date_01)); //1,當 date_02 年夜於 date_01 時,為 1
    System.out.println(date_02.compareTo(date_02)); //0,當兩個日期相等時,為 0
} catch (ParseException e) {
    e.printStackTrace();
}

以上是本文給年夜家引見的Java中罕見的日期操作(取值、轉換、加減、比擬)的全體論述,願望年夜家愛好。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved