1. 程式人生 > >JAVA SE篇--03 日期操作

JAVA SE篇--03 日期操作

1.Date類及其常用方法

    java.util.Date類用於封裝日期及時間資訊。Date類的大多數用於進行時間分量計算的方法以已經被Calendar取代。

//無參的構造方法,構造的Date物件封裝當前的日期及時間資訊。
Date date=new Date();
//Date類重新了toString方法,輸出的字串格式形如:
//Mon Feb 26 15:41:27 CST 2018
System.out.println(date);
long time=date.getTime();
date.setTime(time+24*60*60*1000);
System.out.println(date);

2.SimpleDateFormat類---format方法

    java.text.SimpleDateFormat類用於實現Date物件和字串表示的日期資訊間的轉換。其構造方法為:

        SimpleDateFormat(String pattern) //引數pattern為用於說明格式的模式匹配字串

SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日");
Date date=new Date();
String dateStr=sdf.format(date);
System.out.println(dateStr);

3.SimpleDateFormat類---parsefangf

    和format方法相反,parse方法用於按照特定格式將表示時間的字串轉換為Date物件

String dateStr="2018-02-26";
String pattern="yyyy-MM-dd";
SimpleDateFormat sdf=new SimpleDateFormat(pattern);
Date date=sdf.parse(dateStr);
System.out.println(date);

    常用的格式字串:

    

4.Calendar類

    java.util.Calendar類用於封裝日曆資訊,其主要作用在於其方法可以對時間分量進行運算。Calendar是抽象類,其具體子類針對不同國家的日曆系統,其中應用最廣泛的是GregorianCalendar(格里高利曆),對應世界上絕大多數國家/地區使用的標準日曆系統。    

Calendar cal=Calendar.getInstance();

5.Calendar---分量運算

    Calendar通過set和get方法對各個時間分量進行設定及獲取

Calendar c=Calendar.getInstance();
c.set(Calendar.YEAR,2013);
c.set(Calendar.MONTH,Calendar.JANUARY);
c.set(Calendar.DATE,6);
System.out.println(c.get(Calendar.DAY_OF_WEEK));

    此外還可以通過getActualMaximum可以返回某個時間分量的最大值。

6.列子:

/**
 * 計算促銷日期
 * 輸入一個生產日期。一個保質期的天數,
 * 促銷日為該商品過期日前兩週的週三
 * @author Administrator
 *

 */

public class Test {
	public static void main(String[] args) throws ParseException {
		Scanner sc=new Scanner(System.in);
		System.out.println("請輸入生產日期:yyyy-MM-dd");
		String dateStr=sc.nextLine();
		System.out.println("請輸入保質期的天數");
		int days=Integer.parseInt(sc.nextLine());
		
		//String -->date
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");		
		Date date=sdf.parse(dateStr);
		
		//Date--->Calendar
		Calendar cal=Calendar.getInstance();
		cal.setTime(date);
		
		//計算過期日
		cal.add(Calendar.DAY_OF_YEAR, days);
		//計算過期日的兩週前
		cal.add(Calendar.DAY_OF_YEAR, -14);
		//設定當前周的週三
		cal.set(Calendar.DAY_OF_WEEK, 4);
		
		//calendar-->date
		date=cal.getTime();
		
		//date-->String
		dateStr=sdf.format(date);
		
		System.out.println("促銷日為:"+dateStr);
	}
}