Calendar之商品促銷活動

Calendar之商品促銷活動日期

直接看題目:

計算商品促銷日期:
商場需要在一件商品過期的前兩週的週五開始做促銷
計算商品過期日期往前推兩週的週五的日期

public class ShangPinCuXiao {
	public static void main(String[] args) {
		//定義一個鍵盤掃描器
		Scanner in = new Scanner(System.in);
		//提示用戶輸入的時間及格式
		System.out.println("請輸入商品的過期時間:(格式:2020-05-20)");
		//使用str變量來接收用戶輸入的時間
		String str = in.nextLine();
		//格式化時間
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date date = null;
		try {
			//調用SimpleDateFormat的parse方法,轉換成date類型
			date = sdf.parse(str);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		//創建格林威治時間對象
		Calendar cal = Calendar.getInstance();
		//將用戶輸入的時間傳入格林威治中
		cal.setTime(date);
		//兩週也就是14天
		cal.add(Calendar.DAY_OF_YEAR, -14);
		//設置本週的週五
		cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
		//將格林威治時間轉換成date類型
		date = cal.getTime();
		//進行格式化成String類型
		String after = sdf.format(date);
		//最終輸出時間
		System.out.println("商品要開始促銷的時間是:"+after);
	}
}

這裏面使用到的知識點有:

鍵盤掃描器(不做介紹)

格式化時間:SimpleDateFormat

y:年 yyyy:四位年顯示

M:月 MM:兩位月顯示

d:日 dd:兩位日顯示

a:上午and下午顯示

E:星期

H:時 HH:兩位時顯示

m:分 mm:兩位分顯示

s:秒 ss:兩位秒顯示

字符串轉Date:
String str = "2020-05-20 13:14:52";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//因爲Date有一個ParseException異常,可以throws拋出去,也可以try{}catch(){},這裏推薦try{}catch(){}
Date date = null;
try{
    //sdf.parse();該方法是字符串轉date類型得方法
    date = sdf.parse(str);
    System.out.println(date);
}catch(ParseException e){
    e.printStackTrace();
}
Date轉字符串:
//首先獲取一個當前Date類型時間
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//sdf.format();該方法是將Date類型時間轉換爲String類型
String str = sdf.format(date);
System.out.println(str);
時間類:Date:
//Date類型的創建,獲取的是當前時間
Date date = new Date();
//輸出當前時間
System.out.println(date);//Fri May 29 23:27:04 CST 2020

因爲Date類型獲取時間的方式存在千年蟲的問題,也就是需要在需要在獲取的年份+1900

在早期的計算機程序中規定的年份用兩位數表示,也就是說,假如是1971年,在計算機裏就會被表示爲71,但是到了2000年的時候這個情況就出現了問題,
計算機就會將其年份表示爲00。這樣的話計算機內部對年份的計算就會出現問題。這個事情當時被稱爲千年蟲

並且Date的很多方法都是過時的了,比如說:

在這裏插入圖片描述
所以我們不用Date來獲取時間,但是我們用Date類型來創建時間

格林威治時間:Calendar

Calendar類是java.util包中提供的抽象類,從jdk1.1開始出現了,是Date類的替代方案,Calendar類中包含了對不同國家地區日曆的處理
Calendar常見的子類:java.util.GregorianCalendar;(既然是抽象類,我們需要通過子類來創建對象)

使用Calendar創建對象的兩種方法:

(1) Calendar是抽象類,可以通過子類GregorianCalendar去創建對象:
Calendar cal=new GregorianCalendar();

(2)使用靜態工廠方法獲取對象
Calendar cal=Calendar.getInstance();

Calendar的設置修改日期的方法:

get():獲取日曆字段的值

set();設置日曆字段的值

add();會自動進行調整

roll();添加時間量,只會在指定的字段進行調整

//創建Calendar對象
Calendar cal = Calendar.getInstance();
//輸出時間
System.out.println(cal);
//獲取現在時間
Date date = cal.getTime();
System.out.println(date);//輸出當前時間
//獲取年份,此種方式沒有千年蟲問題
System.out.println("年份爲:"+cal.get(Calendar.YEAR));
//獲取月份 月份從0開始
System.out.println("月份爲:"+(cal.get(Calendar.MONTH)+1));
//獲取一個月的某一天
System.out.println("日期爲:"+cal.get(Calendar.DATE));

Calendar類中的方法較多,這裏隨便拿幾個做例子,大家可以去查看api文檔仔細看裏面的方法進行使用

謝謝大家觀看,咱們下期再見~~~~

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