【Java】Date和時間表示類型的相互轉換

Java Date

首先我們需要了解java.util.Date包中的Date(日期)類,官方文檔也很簡單:Class Date

略去繼承關係和我們主題不相干的方法,簡寫爲如下代碼:

package java.util.Date;

public class Date {

    public Date() {
        //對象創建時的時間
    }

    public Date(Long date) {
        //設置爲距離被稱爲“新紀元”的標準基時間的毫秒數,
        //即1970年1月1日,00:00:00:00:00:00。
    }
    
    public boolean before(Date when) {
        //返回本Date是否在該Date之前
    }

    public boolean after(Date when) {
        //返回本Date是否在該Date之後
    }

    public int compareTo(Date anotherDate) {
        //返回兩Date對象比較結果,相同返回0,本對象比參數對象時間晚則返回大於0的數,早則返回小於0的數。
        //經使用Thread.sleep()方法測試,無論時間差值多少,返回的大於0的數均爲1,小於0的數均爲-1
    }
    
    public long getTime() {
        //返回距離標準基時間的毫秒數
    }

    public void setTime(Long time) {
        //用距離標準基時間的毫秒數設置該Date
    }

    public String toString() {
        //將Date以 "dow mon dd hh:mm:ss zzz yyyy" 格式返回,即 "星期 月 日 時:分:秒 時區 年"
    }
}

另看到Java8中新增toInstant()方法,暫不太瞭解,關於Instant:Class Instant

時間的表示方式

在編程當中時間的表示方式有如下三種:

  1. Date對象
  2. 13位時間戳(長整型long):表示距離被稱爲“新紀元”的標準基時間的毫秒數,即1970年1月1日,00:00:00:00:00:00。
  3. 一定格式的字符串

我們的主要討論方向也就是圍繞三種格式的轉換。

格式轉換

Date對象和時間戳的相互轉換

1.Date對象轉時間戳

通過上述文檔可知,Date類的getTime()方法會返回該Date對象所表示時間對應的時間戳,即:

Date date = new Date();
//將date對象轉換爲時間戳
long timestamp = date.getTime();

2.時間戳轉Date對象

除去已經被廢除的方法,Date類僅有一個含參的構造方法,用時間戳初始化新建的對象:

Date date = new Date(timestamp);

也可以使用setTime()方法用時間戳爲已有的Date對象重新設置時間:

date.setTime(timestamp);

Date對象和字符串的相互轉換

1.Date對象轉字符串

首先可以用繼承自Object類的toString()方法將Date對象轉換爲固定格式的字符串:

Date date = new Date();
String dateString = date.toString();

如果想要轉換爲特定字符串格式,則需要藉助SimpleDateFormat類:

其中"yyyy-MM-dd HH:mm:ss"表示的是年-月-日 時:分:秒

Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = dateFormat.format(date);

2.字符串轉Date對象

字符串轉Date對象同樣需要藉助SimpleDateFormat類,將字符串解析爲Date對象:

注意解析過程可能會拋出異常,需要套上try/catch語句

        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String dateString = "2018-10-15 13:50:00";
		try {
			dateFormat.parse(dateString);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

時間戳和字符串相互轉換

即long和String的相互轉換,使用前面的轉換方法作中介,先轉爲Date,再轉爲另一種即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章