一、Date類
類 Date 表示特定的瞬間,精確到毫秒。用距離1970年1月1日00:00:00的毫秒數(long)類型來表示一個特定的時間點,該值可正可負。
Date類中很多方法已經過時,使用Calendar來替代。
常用方法有
long getTime()
void setTime(long time)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public class T01Date { public static void main(String[] args) { //getTime():返回的時間是距離1970年的毫秒數.值不受setTime()的影響 //date值受setTime()的影響 Date date= new Date(); long current=date.getTime(); System.out.println(current); //1472002479966 System.out.println(date); //Wed Aug 24 09:34:39 CST 2016 long time=current+ 1000 * 60 * 60 * 24 ; //時間設置為明日此時 date.setTime(time); System.out.println(date.getTime()); //1472002479966 System.out.println(current); //1472002479966 System.out.println(date); // Thu Aug 25 09:34:39 CST 2016 } } |
二、SimpleDateFormat
SimpleDateFormat根據特定的日期格式在Date和字符串之間轉換
常用方法
String format(Date date):將日期按照指定格式轉換成字符串
Date parse(String str):將字符串按照指定格式轉換成Date
可以用來指定格式的字符
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
/** * java.text.SimpleDateFormat * 該類可以根據一個指定的日期格式將Date于String * 之間相互轉換 * @author zc * */ public class T02SimpleDateFormat { public static void main(String[] args) throws ParseException { Date now = new Date(); //2016-08-12 09:55:23 //yyyy-MM-dd hh:ss:mm SimpleDateFormat sdf= new SimpleDateFormat( "yyyy年MM月dd日 hh時ss分mm秒" ); String str = sdf.format(now); System.out.println(str); //a 居然能區分上下午漢字 String strDate= "2012年12月20日下午12點20分30秒" ; SimpleDateFormat sdf2= new SimpleDateFormat( "yyyy年MM月dd日ahh點ss分mm秒" ); Date date=sdf2.parse(strDate); System.out.println(date); } } |
三、Calendar
java.util.Calendar是抽象類,主要用來對時間分量進行計算。
常用方法
(1)Date和Calendar之間的轉換
1
2
3
4
5
6
7
8
9
10
11
12
13
|
//默認創建出來的Calendar的實現類表示當前系統時間 Calendar c=Calendar.getInstance(); //將Calendar轉換為Date Date date=c.getTime(); //Date->Calendar /* * void setTime(Date date) * 該方法可以使當前Calendar表示給定的 * Date所表示的時間 * */ c.setTime(date); } } |
(2)getInstance()方法
Calendar是抽象類,其提供了一個工廠方法:Calendar getInstance()用來獲取Calendar類型的實例
(3)get(int field)方法獲取時間分量
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
|
import java.util.Calendar; /** * Calendar提供了獲取各個時間分量的值的方法 * @author zc */ public class T05Calendar2 { public static void main(String[] args) { Calendar c=Calendar.getInstance(); //獲取年 int year=c.get(Calendar.YEAR); System.out.println( "year:" +year); //2016 //獲取月:月從0開始!!!,0表示一月 int month=c.get(Calendar.MONTH); System.out.println( "month:" +month); //7 /* * 和天相關的時間分量 * DATE,DAY_OF_MONTH:是一致的,表示月中的第幾天 * DAY_OF_YEAR:表示年中的天 * DAY_OF_WEEK:表示周中的天 * * */ System.out.println(c.get(Calendar.DATE)); System.out.println(c.get(Calendar.DAY_OF_MONTH)); System.out.println(c.get(Calendar.DAY_OF_YEAR)); System.out.println(c.get(Calendar.DAY_OF_WEEK)); int dow=c.get(Calendar.DAY_OF_WEEK)- 1 ; String[] data={ "日" , "一" , "二" , "三" , "四" , "五" , "六" }; System.out.println( "周" +data[dow]); //獲取小時,分鐘,秒 HOUR_OF_DAY:24小時 HOUR:12小時 System.out.println(c.get(Calendar.HOUR_OF_DAY)); //14 System.out.println(c.get(Calendar.HOUR)); //2 System.out.println(c.get(Calendar.MINUTE)); System.out.println(c.get(Calendar.SECOND)); } } |
(4)set()方法設置時間分量
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
|
/** * 設置時間分量 * @author zc * */ public class T06Calendar3 { public static void main(String[] args){ //表示2008-08-08 20:08:08 //設置年 Calendar c=Calendar.getInstance(); c.set(Calendar.YEAR, 2008 ); //設置月,月從0開始 c.set(Calendar.MONTH,Calendar.AUGUST); //設置日 c.set(Calendar.DATE, 8 ); //設置時 c.set(Calendar.HOUR_OF_DAY, 20 ); //設置分 c.set(Calendar.SECOND, 8 ); //設置秒 c.set(Calendar.MINUTE, 8 ); System.out.println(c.getTime()); //!!!設置的時間分量超出后,會自行進位 } } |
(5)add()方法在當前時間分量基礎上修改時間分量
(6)getActualMaximum()獲取某個時間分量所允許的最大值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
/** * 獲取某個時間分量所允許的最大值 * @author zc */ public class T07Calendar4 { public static void main(String[] args) { Calendar c=Calendar.getInstance(); //查看當月共多少天 int days=c.getActualMaximum(Calendar.DAY_OF_MONTH); System.out.println(days); //查看今年多少天 int doy=c.getActualMaximum(Calendar.DAY_OF_YEAR); System.out.println(doy); int t=c.getActualMaximum(Calendar.MINUTE); System.out.println(t); } } |
四、Date、SimpleDateFormat和Calendar的一個綜合實例
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
|
@Test public void test01() throws ParseException{ //要求用戶輸入一個日期,計算后,指定格式輸出日期 /*String--SimpleDateFormat()-->Date Date-->Calendar 使用Calendar進行相應計算 Calendar-->Date Date--SimpleDateFormat-->String */ String input= "2013-03-26" ; SimpleDateFormat sdf= new SimpleDateFormat( "yyyy-MM-dd" ); Date date=sdf.parse(input); Calendar c=Calendar.getInstance(); //set(),與add() c.setTime(date); c.add(Calendar.YEAR, 1 ); c.set(Calendar.MONTH, 0 ); c.set(Calendar.DAY_OF_WEEK, 1 ); date=c.getTime(); SimpleDateFormat sdf2= new SimpleDateFormat( "yyyy年MM月dd分hh時ss分mm秒" ); String strTime=sdf2.format(date); System.out.println(strTime); } |
總結
以上就是本文關于java日期相關類實例詳解的全部內容,希望對大家有所幫助。如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
原文鏈接:http://blog.csdn.net/kaishizhangcheng/article/details/52416262