Java中的日期類設計的比較失敗,剛開始使用Date來計算時間,後來大部分Date類的方法都過期了;想用Calendar類代替Date類,然而Calendar類也是不盡如人意。下面簡單介紹下Java中的日期轉換方法。java
Date類的構造方法有兩個,public Date()和public Date(long date).能夠用來表示當前日期,或者將長整型數據表示成時間。第一個勉強能夠用下,用來表示當前時間,第二個試問誰能記得住那麼一大串的時間值呢?看下示例吧:spa
//參數表示1970-01-01 00:00:00到指定時間的毫秒數 Date date1 = new Date(14686531L); System.out.println(date1); Date date2= new Date(); System.out.println(date2);
輸出的日期爲:設計
Thu Jan 01 12:04:46 GMT+08:00 1970
Sat Apr 20 08:43:34 GMT+08:00 2019code
其中第一個參數表示:1970-01-01 00:00:00到指定時間的毫秒數orm
第二個表示:當前時間。對象
使用Date將字符串轉換爲日期格式:Date的年月日是在1900-01的基礎上來累加。所以,要現將字符串中的年月日切分出來,而後再使用Date表示。blog
示例以下:開發
//2. 出生日期 //2000-12-16->轉化爲date對象 //在1900-01的基礎上來累加 String str = "2000-12-16"; //現將年月日切分出來 String[] arr = str.split("-"); int year = Integer.parseInt(arr[0]) - 1900; int month = Integer.parseInt(arr[1]) - 1; int day = Integer.parseInt(arr[2]); //Date date = new Date(2000,12,16); //若是某個類、方法、屬性出現了刪除線,而且有提示須要進行警告壓制 //壓制內容deprecation,表示這個類、方法、屬性已過期 //已過期:指當前代碼依然能夠用,可是不推薦使用,在後續迭代版本中可能會被拋棄 @SuppressWarnings("deprecation") Date date = new Date(year, month, day); System.out.println(date);
由於使用Date類與字符串時間相互轉化十分困難,所以,考慮Date類的其餘子類。DateFormat是日期/時間格式化子類的抽象類,它與以語言無關的方式格式化並解析日期或時間,是抽象類,因此使用其子類SimpleDateFormat實現日期和字符串的相互轉換。字符串
public static void main(String[] args) throws Exception { // 2000-12-16 // 2000/12/16 // 2000.12.16 // 12/16/2000 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 將字符串轉化爲日期 Date date = sdf.parse("2000-12-16 16:52:39"); System.out.println(date); Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); String str = sdf.format(date); System.out.println(str); }
java開發Calendar的目的是爲了替換Date類,可是,該類設計的也是至關失敗。僅有幾個方法還值得使用一下。Calendar類是一個抽象類,不過提供了一個getInstance方法能夠生成一個實例對象。經過該對象能夠設置當前時間和獲取日期。get
public static void main(String[] args) { // 建立Calendar對象 Calendar c = Calendar.getInstance(); System.out.println(c); // 獲取Hour屬性的值 int hour = c.get(Calendar.HOUR); System.out.println(hour); c.set(Calendar.HOUR, 12); // 獲取Date對象的方法 Date d = c.getTime(); System.out.println(d); }