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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// 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()方法;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM