Java中Date型別詳解
一、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 // 1.計算某一月份的最大天數 2 Calendar time = Calendar.getInstance(); 3 time.clear(); 4 time.set(Calendar.YEAR, year); //year 為 int 5 time.set(Calendar.MONTH, i - 1);// 注意,Calendar物件預設一月為0 6 int day = time.getActualMaximum(Calendar.DAY_OF_MONTH);// 本月份的天數 7 // 注:在使用set方法之前,必須先clear一下,否則很多資訊會繼承自系統當前時間 8 // 2.Calendar和Date的轉化 9 // (1) Calendar轉化為Date Calendar 10 cal = Calendar.getInstance(); 11 Date date = cal.getTime(); 12 // (2) Date轉化為Calendar 13 Date date = new Date(); 14 Calendar cal = Calendar.getInstance(); 15 cal.setTime(date); 16 // 3.格式化輸出日期時間(這個用的比較多) 17 Date date = new Date(); 18 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 19 String time = df.format(date); 20 System.out.println(time); 21 // 4.計算一年中的第幾星期 22 // (1)計算某一天是一年中的第幾星期 23 Calendar cal = Calendar.getInstance(); 24 cal.set(Calendar.YEAR, 2006); 25 cal.set(Calendar.MONTH, 8); 26 cal.set(Calendar.DAY_OF_MONTH, 3); 27 int weekno = cal.get(Calendar.WEEK_OF_YEAR); 28 // (2)計算一年中的第幾星期是幾號 29 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 30 Calendar cal = Calendar.getInstance(); 31 cal.set(Calendar.YEAR, 2006); 32 cal.set(Calendar.WEEK_OF_YEAR, 1); 33 cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 34 System.out.println(df.format(cal.getTime()));//輸出:2006-01-02 35 // 5.add()和roll()的用法(不太常用) 36 // (1)add()方法 37 SimpleDateFormat df=newSimpleDateFormat("yyyy-MM-dd"); 38 Calendar cal = Calendar.getInstance(); 39 cal.set(Calendar.YEAR, 2006); 40 cal.set(Calendar.MONTH, 8); 41 cal.set(Calendar.DAY_OF_MONTH, 3); 42 cal.add(Calendar.DATE, -4); 43 Date date = cal.getTime(); 44 System.out.println(df.format(date)); 45 cal.add(Calendar.DATE, 4); 46 date = cal.getTime(); 47 System.out.println(df.format(date));//輸出:2006-08-30 2006-09-03 48 //(2)roll方法 49 cal.set(Calendar.YEAR, 2006); 50 cal.set(Calendar.MONTH,8); 51 cal.set(Calendar.DAY_OF_MONTH,3); 52 cal.roll(Calendar.DATE, -4); 53 date=cal.getTime(); 54 System.out.println(df.format(date)); 55 cal.roll(Calendar.DATE,4); 56 date=cal.getTime(); 57 System.out.println(df.format(date));//輸出:2006-09-292006-09-03 58 // 可見,roll()方法在本月內迴圈,一般使用add()方法;
一、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。
例如:
1 2 3 4 5 6 7 8 |
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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |