JAVA SE篇--03 日期操作
阿新 • • 發佈:2019-02-11
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);
}
}