一、Date類型的初始化
1、 Date(int year, int month, int date); 直接寫入年份是得不到正確的結果的。 因為java中Date是從1900年開始算的,所以前面的第一個參數只要填入從1900年后過了多少年就是你想要得到的年份。 月需要減1,日可以直接插入。 這種方法用的比較少,常用的是第二種方法。
2、 這種方法是將一個符合特定格式,比如yyyy-MM-dd,的字符串轉化成為Date類型的數據。 首先,定義一個Date類型的對象 Date date = null; 再定義一個String類型的符合格式的字符串 String dateStr = "2010-9-10"; 把這個字符串進行拆分 String[ ] dateDivide = dateStr.split("-"); 把年月日分別取出,賦給Calendar,用 Calendar的getTime();取得日期再賦給date。
例如:
if(dateDivide.length==3){
int year = Integer.parseInt(dateDivide [0].trim());//去掉空格
int month = Integer.parseInt(dateDivide [1].trim());
int day = Integer.parseInt(dateDivide [2].trim());
Calendar c = Calendar.getInstance();//獲取一個日歷實例
c.set(year, month-1, day);//設定日歷的日期
date = c.getTime();
}
二、Date類型的比較
Date a;
Date b;
假設現在你已經實例化了a和b
a.after(b)返回一個boolean,如果a的時間在b之后(不包括等於)返回true
b.before(a)返回一個boolean,如果b的時間在a之前(不包括等於)返回true
a.equals(b)返回一個boolean,如果a的時間和b相等返回true
三、Date類型常用的操作函數
// 1.計算某一月份的最大天數
Calendar time = Calendar.getInstance();
time.clear();
time.set(Calendar.YEAR, year); // year 為 int
time.set(Calendar.MONTH, i - 1);// 注意,Calendar對象默認一月為0
int day = time.getActualMaximum(Calendar.DAY_OF_MONTH);// 本月份的天數
// 注:在使用set方法之前,必須先clear一下,否則很多信息會繼承自系統當前時間
// 2.Calendar和Date的轉化
// (1) Calendar轉化為Date Calendar
cal = Calendar.getInstance();
Date date = cal.getTime();
// (2) Date轉化為Calendar
Date date = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(date);
// 3.格式化輸出日期時間(這個用的比較多)
Date date = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String time = df.format(date);
System.out.println(time);
// 4.計算一年中的第幾星期
// (1)計算某一天是一年中的第幾星期
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH, 8);
cal.set(Calendar.DAY_OF_MONTH, 3);
int weekno = cal.get(Calendar.WEEK_OF_YEAR);
// (2)計算一年中的第幾星期是幾號
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.WEEK_OF_YEAR, 1);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
System.out.println(df.format(cal.getTime()));//輸出:2006-01-02
// 5.add()和roll()的用法(不太常用)
// (1)add()方法
SimpleDateFormat df=newSimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH, 8);
cal.set(Calendar.DAY_OF_MONTH, 3);
cal.add(Calendar.DATE, -4);
Date date = cal.getTime();
System.out.println(df.format(date));
cal.add(Calendar.DATE, 4);
date = cal.getTime();
System.out.println(df.format(date));//輸出:2006-08-30 2006-09-03
//(2)roll方法
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH,8);
cal.set(Calendar.DAY_OF_MONTH,3);
cal.roll(Calendar.DATE, -4);
date=cal.getTime();
System.out.println(df.format(date));
cal.roll(Calendar.DATE,4);
date=cal.getTime();
System.out.println(df.format(date));//輸出:2006-09-292006-09-03
// 可見,roll()方法在本月內循環,一般使用add()方法;
