1. 程式人生 > 實用技巧 >java常用類:Date/Calendar/SimpleDateFormat

java常用類:Date/Calendar/SimpleDateFormat

Date

  • Date表示特定的瞬間,精確到毫秒。Date類中的大部分方法都已經被Calendar類中的方法取代

  • 時間單位:

    1秒=1000毫秒

    1毫秒=1000微秒

    1微秒=1000納秒

import java.util.Date;
public class Demo01 {
    public static void main(String[] args) {
        // 1 建立Date物件
        Date date1 = new Date();
        System.out.println(date1.toString());
        System.out.println(date1.toLocaleString());//過時了

        // 建立昨天的
        Date date2 = new Date(date1.getTime() - (60*60*24*1000));
        System.out.println(date2.toLocaleString());

        // 2 方法after before
        boolean b1 = date1.after(date2);
        System.out.println(b1);
        boolean b2 = date1.before(date2);
        System.out.println(b2);

        // 比較compareTo();
        int d = date1.compareTo(date2);
        System.out.println(d);

        // 比較是否相等 equals()
        boolean b3 = date1.equals(date2);
        System.out.println(b3);
    }
}
//結果:
//Sat Dec 26 21:48:30 GMT+08:00 2020
//2020-12-26 21:48:30
//2020-12-25 21:48:30
//true
//false
//1
//false



Calendar

  • Calendar提供了獲取或設定各種日曆欄位的方法

  • 構造方法

    protected Calendar():由於修飾符是protected,所以無法直接建立該物件

  • 其他方法

方法名 說明
static Calendar getInstance() 使用預設時區和區域獲取日曆
void set(int year, int month, int date, int hourofday, int minute, int second) 設定日曆的年、月、日、時、分、秒
int get(int field) 返回給定日曆欄位的值。欄位比如年、月、日
void setTime(Date date) 用給定的date設定此日曆時間
Date getTime() 返回一個date表示此日曆的時間
void add(int field, int amount) 按照日曆的規則,給指定欄位新增或減少時間量
long getTimeInMilles() 毫秒為單位返回該日曆的時間值
public class Demo01 {
    public static void main(String[] args) {
        //1.建立Calendar物件
        Calendar calender=Calendar.getInstance();
        System.out.println(calender.getTime().toLocaleString());
        System.out.println(calender.getTimeInMillis());
        //2獲取時間資訊
        int year=calender.get(Calendar.YEAR);
        //月是從0到11
        int month=calender.get(Calendar.MONTH);
        int day=calender.get(Calendar.DAY_OF_MONTH);//Date
        int hour=calender.get(Calendar.HOUR_OF_DAY);//Hour 12小時
        int minute=calender.get(Calendar.MINUTE);
        int second=calender.get(Calendar.SECOND);
        System.out.println(year+"年"+(month+1)+"月"+day+"日"+hour+":"+minute+":"+second);
        //3修改時間
        Calendar calendar2=Calendar.getInstance();
        System.out.println(calendar2.getTime().toLocaleString());
        calendar2.set(Calendar.DAY_OF_MONTH,5);//修改day
        System.out.println(calendar2.getTime().toLocaleString());
        //4使用add方法修改時間
        calendar2.add(Calendar.HOUR,1);
        System.out.println(calendar2.getTime().toLocaleString());
        //5 獲取當前時間的最大值或者最小值
        System.out.println(calendar2.getActualMaximum(Calendar.DAY_OF_MONTH));//最大值

    }
}
//結果:
//2020-12-27 10:23:03
//1609035783235
//2020年12月27日10:23:3
//2020-12-27 10:23:03
//2020-12-5 10:23:03
//2020-12-5 11:23:03
//31





SimpleDateFormat

  • SimpleDateFormat是一個以與語言環境有關的方式來格式化和解析日期的具體類

  • 進行格式化(日期-->文字)、解析(文字-->日期)

  • 常用的時間模式字母

    字母 日期或時間 示例
    y 2019
    M 年中月份 08
    d 月中天數 10
    H 一天中小時(0-23) 22
    m 分鐘 16
    s 59
    S 毫秒 367
public class Demo01 {
    public static void main(String[] args) throws Exception{
        //1.建立SimpleDateFormat物件
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//字串引數就是日期的模式
        //2建立Date
        Date date=new Date();
        //格式化date 把date轉成字串
        String str=sdf.format(date);
        System.out.println(str);
        //解析 把字串轉成date
        Date date2 = sdf.parse("2020/05/01 12:22:00");
        System.out.println(date2);
    }
}
//結果:
//2020/12/27 10:40:15
//Fri May 01 12:22:00 GMT+08:00 2020