天天看點

Java常用日期操作詳解

Date類型大多數時間分量計算方法已經被Calendar取代

Date常用方法setTime getTime()

new Date();預設擷取目前的時間

SimpleDateFormat用來格式化和解析日期的具體類

比對日期的字元串

y–>年

M–>月

d–>日

E–>星期

a–>上下午

H–>小時(24小時制)

h–>小時(12小時制)

m–>分

s–>秒

格式化Date傳回值為String

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String result = sdf.format(new Date());
System.out.println(result);
           

輸出結果:2015-07-22 21:17:43

将String解析為Date

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strDate = "2015-07-22 21:21:01";
Date date = sdf.parse(strDate);
System.out.println(date);
           

輸出結果:

Wed Jul 22 21:21:01 CST 2015

Calender封裝了月曆資訊

常用方法:

getInstance()擷取一個系統所在地區的一個Calender的子類實作

通常用于執行個體化Calendar

set(int field,int value)設定時間

get(int field)擷取時間分量對應值

getActualMaximum(int field)擷取時間分量的最大值

add()對時間分量進行計算

setTime和getTime方法設定和擷取時間

綜合運用:

商品促銷計算程式

需求:

使用者輸入商品生産日期和保存期限,通過程式計算促銷日期

計算規則:

到保存期限前14添所在的周三為促銷日

public class PromotionDate {

    public static void main(String[] args) throws Exception {
        Calendar cd = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Scanner sc = new Scanner(System.in);

        System.out.print("請輸入生産日期:");
        Date productionDate= sdf.parse(sc.nextLine());//接收字元串并轉換為日期型
        System.out.print("請輸入保存期限:");
        int days = sc.nextInt();

        cd.setTime(productionDate);
        cd.add(Calendar.DAY_OF_YEAR, (days - ));
        cd.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
        String promotionDate = sdf.format(cd.getTime()); //格式化計算後的日期
        System.out.println("該産品的促銷日期為:"+ promotionDate);
        sc.close();

    }

}
           

測試結果:

請輸入生産日期:2015-01-01

請輸入保存期限:180

該産品的促銷日期為:2015-06-17