天天看點

Java中的Date類SimpleDateformat類和Calentar類的知識

總結一下日期類型的知識,日期類型和字元編碼以及通路目錄這些問題都很簡單但是涉及到的知識點比較雜,是以讓我這樣的小白感到很難的樣子,但其實很簡單。

Date類

這個類就是一個日期類,主要就是讓我們擷取到目前時間(常用),或者是某個特定時間(不常用)

如下代碼例子:

Date nowtime = new Date();
		System.out.println(nowtime);
		Date nowtime1 = new Date(100000000);
		System.out.println(nowtime1);

結果為:
Sun Aug 26 10:12:54 CST 2018
Fri Jan 02 11:46:40 CST 1970
           

值得注意的就是當使用Date的無參構造器時獲得的是目前時間,當裡面有參數時是從“公曆”開始算,即1970年一月一日,參數的機關是毫秒。

SimpleDateFormat類

這個類應該算是我們在開發中最常用的,最常用的構造器就是

public SimpleDateFormat(String pattern)

    {

        this(pattern, Locale.getDefault(Locale.Category.FORMAT));

    }

(做軟體到現在使用這個類絕大部分都隻是用這個構造器,是以就列了這一個,其實都是死的,知道它是幹什麼的就好了,沒什麼思想在裡面,等之後厲害了在看源代碼)

這個類的作用就是格式化時間,上面的date擷取到的時間格式是不是看着很别扭,是以有了這個類,當然這個類還有一個用法很重要,就是負責字元串和時間格式之間的轉換,看代碼:

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sdf.format(nowtime));
結果:
2018-08-26

時間格式和字元串格式之間的轉化
字元串轉成日期格式
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
String myDate ="2018-08-26";
Date d=sdf.parse(myDate);//此方法傳回值就是Date類型,有個異常要抛
System.out.println(d);
結果為:
Sun Aug 26 00:00:00 CST 2018

日期格式轉成字元串
Date nowtime = new Date();
System.out.println(nowtime);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
String d=sdf.format(nowtime);
System.out.println(d); 
結果為:
Sun Aug 26 10:33:13 CST 2018
2018-08-26
		 
           

這個類的大緻用法就是這些了,剩下的還有一些死東西,比如說表示日期的字元這些東西都是固定的,忘記時直接查就行。

Calendar類

此類存在的意義是,之前的date類要是想要獲得某個具體的日期還得從1970年算毫秒數,有個這個類直接調用其内部的API方法就可以得到具體日期了。

另外此類是一個抽象類,是以不能直接建立對象,但是可以根據起子類的

public abstract class Calendar implements Serializable, Cloneable, Comparable<Calendar> 

用法如下代碼:

Calendar calendar=Calendar.getInstance();
		calendar.setTime(nowtime);
		int year=calendar.get(Calendar.YEAR);
		int mouth = calendar.get(Calendar.MONTH)+1;
		int day = calendar.get(Calendar.DAY_OF_MONTH);
		int hour=calendar.get(Calendar.HOUR_OF_DAY);
		System.out.println(year+"年"+mouth+"月"+day+"日"+hour+"時");

           

其實也沒啥東西,調用相應的API方法來擷取相應的時間(年月日)

接下來說一個String類的日期類型轉化的知識,也是今天剛學到的,不得不感歎String的強大。

先上代碼:

Date nowtime = new Date();//擷取目前時間        
        Date nowtime1 = new Date(100000000);//擷取1970年之後的時間
		System.out.println(nowtime1);
		String s1=String.format("%tY年%tm月%td日", nowtime,nowtime,nowtime1);
        //直接用String來進行日期格式轉化,注意nowtime和nowtime1并不是同一個時間
		System.out.println(s1);
		String s2=String.format("%tF", nowtime);
        //這也是直接用String對時間格式進行轉化
		System.out.println(s2);
		Date nowtime = new Date();
		String str1=String.format("%tY年%<tm月%<td日", nowtime);
        //直接用String來進行日期格式轉化,注意nowtime和nowtime1是同一個時間
		System.out.println(str1);
		String str2=String.format("%tY-%<tm-%<td", nowtime);
        //用String對時間格式進行轉化
		System.out.println(str2);
           
運作結果為:
Fri Jan 02 11:46:40 CST 1970
2018年08月02日
2018-08-26
2018年08月26日
2018-08-26
2018年8月26日10時
           

可以使用String來代替SimpleDateFormat這個類的操作。

參考書籍:Java2實用教程第五版