9Date

Date
Date對象的創建
java.util包提供了Date類來封裝當前的日期和時間。
Date類提供兩個構造函數來實例化Date對象。
public Date() {
this(System.currentTimeMillis());
}
無參的構造函數使用當前日期和事件來初始化對象。
public Date(long date) {
fastTime = date;
}
還有一些重載的構造函數,被註解@Deprecated修飾了,不推薦使用。
此構造函數接收一個參數,該參數是從1970年1月1日起的毫秒數。
Date中常用方法
after和before
public boolean after(Date when) {
return getMillisOf(this) > getMillisOf(when);
}
public boolean before(Date when) {
return getMillisOf(this) < getMillisOf(when);
}
getTime
public long getTime() {
return getTimeImpl();
}
compareTo
public int compareTo(Date anotherDate) {
long thisTime = getMillisOf(this);
long anotherTime = getMillisOf(anotherDate);
return (thisTime<anotherTime ? -1 : (thisTime==anotherTime ? 0 : 1));
}
equals
public boolean equals(Object obj) {
return obj instanceof Date && getTime() == ((Date) obj).getTime();
}
常用到的時間類

DateFormat和SimpleDateFormat
完成字符串和時間對象的轉化
Calendar和GregorianCalendar
人類在識別時間的時候是根據年月日這種日期概念進行分辨。而計算機是long類型的數字。通過Calendar處理兩者之間的轉換。

作業: 自己寫一個類(DateUtil.java/CommonService)
/**
* 計算兩個時間之間的差值,以小時爲單位
*
* @param 被減的時間
* @param 減數時間
* @return 第一個時間減第二個時間的值(H)
/
/
*
* 查詢前N天的時間
*
* @param pattern
* @param days
* @return
/
/
*
* 將DATE轉化爲指定的time字符串 日期轉字符串(Date轉String)
*
* @param String
* 時間格式
* @return String 主機時間
*/

/**
* 將一格式的時間字符串轉爲爲另一個格式時間字符串,主要針對getFinalTime使用(兩個參數,不同的字符串格式)
*
* @param time
* @return
* @throws Exception
*/

public class DateTest {
public static void main(String[] args) {
// 使用無參的構造函數創建Date對象
Date date = new Date();
// 使用toString()方法輸出日期時間
System.out.println(date.toString());

    // 使用有參數的構造函數創建Date對象
    Date date1 = new Date(System.currentTimeMillis());
    System.out.println(date1.toString());

    // 使用GMT  格林威治時間
    System.out.println(date.toGMTString());  // 不建議這麼使用

    // 上面System.out.println(new Date(0)),打印出來的時間是8點而非0點,原因是存在系統時間和本地時間的問題,其實系統時間依然是0點,只不過我們使用的是北京時間,屬於東8區,故打印的結果是8點。
    // 如果通過毫秒數來表示1970年1月1日9點
    Date date2 = new Date(3600l * 1000);
    System.out.println(date2.toString());

    // before和after
    boolean beforeFlag = date1.before(date2);
    boolean afterFlag = date1.after(date2);
    System.out.println("beforeFlag : " + beforeFlag);
    System.out.println("afterFlag : " + afterFlag);

    // getTime
    long getTimeResult = new Date().getTime();
    System.out.println("getTimeResult : " + getTimeResult);


}

}

public class DateFormatTest {
public static void main(String[] args) {
//DateFormat dateFormat = new SimpleDateFormat(“yyyy年MM月dd日”);
DateFormat dateFormat = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
//DateFormat dateFormat = new SimpleDateFormat(“yyyy-mm-dd HH:MM:ss”); // 常見錯誤的寫法
Date date = new Date();
String dateStr = dateFormat.format(date); // Date轉字符串(按照格式化要求)
System.out.println("dateStr : " + dateStr);

    System.out.println("******************************");

    String str = "2018年03月21日 10:12:13";
    DateFormat dateFormat1 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
    Date dateResult = null;
    try {
        dateResult = dateFormat1.parse(str);  // 字符串轉Date(格式化串必須和字符串的格式一模一樣)
        System.out.println("dateResult : " + dateResult.toString());
    } catch (ParseException e) {
        e.printStackTrace();
    }
}

}

public class CalendarTest {
public static void main(String[] args) {
Calendar calendar = new GregorianCalendar();
// 通過set方法同時塞日期和時間
calendar.set(2018, Calendar.APRIL, 1, 12, 12, 12);
Date date = calendar.getTime();
System.out.println(date);
// 通過set方法分別塞年、月、日
Calendar calendar1 = new GregorianCalendar();
calendar1.set(Calendar.YEAR, 2012);
calendar1.set(Calendar.MONTH, 1);
calendar1.set(Calendar.DATE, 10);

    // 通過setTime方法設置時間
    Calendar calendar2 = new GregorianCalendar();
    calendar2.setTime(new Date());

    // 測試日期計算
    Calendar calendar3 = new GregorianCalendar();
    calendar3.add(Calendar.YEAR, 10);
    calendar3.add(Calendar.YEAR, -20);
    System.out.println(calendar3.getTime());
}

}

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