時間日期
Date 類
- Date 類表示系統(tǒng)特定的時間戳缀旁,可以精確到毫秒。
- Date 對象表示時間的默認(rèn)順序是星期试疙、月诵棵、日、小時祝旷、分履澳、秒、年怀跛。
- Date類有兩種構(gòu)造方法
1距贷、 Date(): 此種形式表示分配 Date 對象并初始化此對象,以表示分配它的時間(精確到毫秒)吻谋,使用該構(gòu)造方法創(chuàng)建的對象可以獲取本地的當(dāng)前時間忠蝗。
2、 Date(long date): 此種形式表示從 GMT 時間(格林尼治時間)1970 年 1 月 1 日 0 時 0 分 0 秒開始經(jīng)過參數(shù) date 指定的毫秒數(shù)漓拾。
Date date1=new Date(); //調(diào)用無參數(shù)構(gòu)造函數(shù)
System.out.println(date1.toString()); //輸出:Wed May 18 21:24:40 CST 2016
Date date2=new Date(60000); //調(diào)用含有一個long類型參數(shù)的構(gòu)造函數(shù)
System.out.println(date2); //輸出:Thu Jan 0108:01:00 CST 1970
Date 類的無參數(shù)構(gòu)造方法獲取的是系統(tǒng)當(dāng)前的時間阁最,顯示的順序為星期、月骇两、日速种、小時、分低千、秒配阵、年。
Date 類帶 long 類型參數(shù)的構(gòu)造方法獲取的是距離 GMT 指定毫秒數(shù)的時間示血,60000 毫秒是一分鐘棋傍,而 GMT(格林尼治標(biāo)準(zhǔn)時間)與 CST(中央標(biāo)準(zhǔn)時間)相差 8 小時,也就是說 1970 年 1 月 1 日 00:00:00 GMT 與 1970 年 1 月 1 日 08:00:00 CST 表示的是同一時間难审。 因此距離 1970 年 1 月 1 日 00:00:00 CST 一分鐘的時間為 1970 年 1 月 1 日 00:01:00 CST瘫拣,即使用 Date 對象表示為 Thu Jan 01 08:01:00 CST 1970。
表1 Date類中的常用方法
方法 | 描述 |
---|---|
boolean after(Date when) | 判斷此日期是否在指定日期之后 |
boolean before(Date when) | 判斷此日期是否在指定日期之前 |
int compareTo(Date anotherDate) | 比較兩個日期的順序 |
boolean equals(Object obj) | 比較兩個日期的相等性 |
long getTime() | 返回自 1970 年 1 月 1 日 00:00:00 GMT 以來告喊,此 Date 對象表示的毫秒數(shù) |
String toString() | 把此 Date 對象轉(zhuǎn)換為以下形式的 String: dow mon dd hh:mm:ss zzz yyyy麸拄。其中 dow 是一周中的某一天(Sun、Mon葱绒、Tue感帅、Wed、Thu地淀、Fri 及 Sat) |
Calendar 類
- Calendar 類是一個抽象類失球,它為特定瞬間與 YEAR、MONTH、DAY_OF—MONTH实苞、HOUR 等日歷字段之間的轉(zhuǎn)換提供了一些方法豺撑,并為操作日歷字段(如獲得下星期的日期) 提供了一些方法。
- 創(chuàng)建 Calendar 對象不能使用 new 關(guān)鍵字黔牵,因為 Calendar 類是一個抽象類聪轿,但是它提供了一個 getInstance() 方法來獲得 Calendar類的對象。getInstance() 方法返回一個 Calendar 對象猾浦,其日歷字段已由當(dāng)前日期和時間初始化陆错。
- Calendar c = Calendar.getInstance();
方法 | 描述 |
---|---|
void add(int field, int amount) | 根據(jù)日歷的規(guī)則,為給定的日歷字段 field 添加或減去指定的時間量 amount |
boolean after(Object when) | 判斷此 Calendar 表示的時間是否在指定時間 when 之后金赦,并返回判斷結(jié)果 |
boolean before(Object when) | 判斷此 Calendar 表示的時間是否在指定時間 when 之前音瓷,并返回判斷結(jié)果 |
void clear() | 清空 Calendar 中的日期時間值 |
int compareTo(Calendar anotherCalendar) | 比較兩個 Calendar 對象表示的時間值(從格林威治時間 1970 年 01 月 01 日00 時 00 分 00 秒至現(xiàn)在的毫秒偏移量),大則返回 1夹抗,小則返回 -1绳慎,相等返回 0 |
int get(int field) | 返回指定日歷字段的值 |
int getActualMaximum(int field) | 返回指定日歷字段可能擁有的最大值 |
int getActualMinimum(int field) | 返回指定日歷字段可能擁有的最小值 |
int getFirstDayOfWeek() | 獲取一星期的第一天。根據(jù)不同的國家地區(qū)漠烧,返回不同的值 |
static Calendar getInstance() | 使用默認(rèn)時區(qū)和語言壞境獲得一個日歷 |
static Calendar getInstance(TimeZone zone) | 使用指定時區(qū)和默認(rèn)語言環(huán)境獲得一個日歷 |
static Calendar getInstance(TimeZone zone,Locale aLocale) | 使用指定時區(qū)和語言環(huán)境獲得一個日歷 |
Date getTime() | 返回一個表示此 Calendar 時間值(從格林威治時間 1970 年 01 月 01 日 00 時 00 分 00 秒至現(xiàn)在的毫秒偏移量)的 Date 對象 |
long getTimeInMillis() | 返回此 Calendar 的時間值杏愤,以毫秒為單位 |
void set(int field, int value) | 為指定的日歷字段設(shè)置給定值 |
void set(int year, int month, int date) | 設(shè)置日歷字段 YEAR、MONTH 和 DAY_OF_MONTH 的值 |
void set(int year, int month, int date, int hourOfDay, int minute, int second) | 設(shè)置字段 YEAR已脓、MONTH珊楼、DAY_OF_MONTH、HOUR摆舟、 MINUTE 和 SECOND 的值 |
void setFirstDayOfWeek(int value) | 設(shè)置一星期的第一天是哪一天 |
void setTimeInMillis(long millis) | 用給定的 long 值設(shè)置此 Calendar 的當(dāng)前時間值 |
- Calendar 對象可以調(diào)用 set() 方法將日歷翻到任何一個時間亥曹,當(dāng)參數(shù) year 取負(fù)數(shù)時表示公元前邓了。Calendar 對象調(diào)用 get() 方法可以獲取有關(guān)年恨诱、月、日等時間信息骗炉,參數(shù) field 的有效值由 Calendar 靜態(tài)常量指定照宝。
Calendar 類中定義了許多常量,分別表示不同的意義句葵。
Calendar.YEAR:年份厕鹃。
Calendar.MONTH:月份。
Calendar.DATE:日期乍丈。
Calendar.DAY_OF_MONTH:日期剂碴,和上面的字段意義完全相同。
Calendar.HOUR:12小時制的小時轻专。
Calendar.HOUR_OF_DAY:24 小時制的小時忆矛。
Calendar.MINUTE:分鐘。
Calendar.SECOND:秒。
Calendar.DAY_OF_WEEK:星期幾催训。
Calendar calendar=Caiendar.getlnstance(); //如果不設(shè)置時間洽议,則默認(rèn)為當(dāng)前時間
caiendar.setTimefnew Date()); //將系統(tǒng)當(dāng)前時間賦值給 Calendar 對象
System.out.println("現(xiàn)在時刻:"+calendar.getTime()); //獲取當(dāng)前時間
int year=calendar.get(Calendar.YEAR); //獲取當(dāng)前年份
System.out.println("現(xiàn)在是"+year+"年");
int month=calendar.get(Calendar.MONTH)+1; //獲取當(dāng)前月份(月份從 0 開始,所以加 1)
System.out.print(month+"月");
int day=calendar.get(Calendar.DATE); //獲取日
System.out.print(day+"日");
int week=calendar.get(Calendar.DAY_OF_WEEK)-1; //獲取今天星期幾(以星期日為第一天)
System.out.print("星期"+week);
int hour=calendar.get(Calendar.HOUR_OF_DAY); //獲取當(dāng)前小時數(shù)(24 小時制)
System.out.print(hour+"時");
int minute=calendar.get(Calendar.MINUTE); //獲取當(dāng)前分鐘
System.out.print(minute+"分");
int second=calendar.get(Calendar.SECOND); //獲取當(dāng)前秒數(shù)
System.out.print(second+"秒");
int millisecond=calendar.get(Calendar.MILLISECOND); //獲取毫秒數(shù)
System.out.print(millisecond+"毫秒");
int dayOfMonth=calendar.get(Calendar.DAY_OF_MONTH); //獲取今天是本月第幾天
System.out.println("今天是本月的第 "+dayOfMonth+" 天");
int dayOfWeekInMonth=calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH); //獲取今天是本月第幾周
System.out.println("今天是本月第 "+dayOfWeekInMonth+" 周");
int many=calendar.get(Calendar.DAY_OF_YEAR); //獲取今天是今年第幾天
System.out.println("今天是今年第 "+many+" 天");
Calendar c=Calendar.getInstance();
c.set(2012/8/8); //設(shè)置年月日漫拭,時分秒將默認(rèn)采用當(dāng)前值
System.out.println("設(shè)置日期為 2012-8-8 后的時間:"+c.getTime()); //輸出時間
DateFormat 類
- DateFormat 是日期/時間格式化子類的抽象類亚兄,它以與語言無關(guān)的方式格式化并解析日期或時間。日期/時間格式化子類(如 SimpleDateFormat)允許進(jìn)行格式化(也就是日期→文本)采驻、解析(文本→日期)和標(biāo)準(zhǔn)化日期审胚。
- 在創(chuàng)建 DateFormat 對象時不能使用 new 關(guān)鍵字,而應(yīng)該使用 DateFormat 類中的靜態(tài)方法 getDateInstance()礼旅,示例代碼如下
DateFormat df = DateFormat.getDateInstance();
//獲取不同格式化風(fēng)格和中國環(huán)境的日期
DateFormat df1=DateFormat.getDateInstance(DateFormat.SHORT,Locale.CHINA);
DateFormat df2=DateFormat.getDateInstance(DateFormat.FULL,Locale.CHINA);
DateFormat df3=DateFormat.getDateInstance(DateFormat.MEDIUM,Locale.CHINA);
DateFormat df4=DateFormat.getDateInstance(DateFormat.LONG,Locale.CHINA);
//獲取不同格式化風(fēng)格和中國環(huán)境的時間
DateFormat df5=DateFormat.getTimeInstance(DateFormat.SHORT,Locale.CHINA);
DateFormat df6=DateFormat.getTimeInstance(DateFormat.FULL,Locale.CHINA);
DateFormat df7=DateFormat.getTimeInstance(DateFormat.MEDIUM,Locale.CHINA);
DateFormat df8=DateFormat.getTimeInstance(DateFormat.LONG,Locale.CHINA);
//將不同格式化風(fēng)格的日期格式化為日期字符串
String date1=df1.format(new Date());
String date2=df2.format(new Date());
String date3=df3.format(new Date());
String date4=df4.format(new Date());
//將不同格式化風(fēng)格的時間格式化為時間字符串
String time1=df5.format(new Date());
String time2=df6.format(new Date());
String time3=df7.format(new Date());
String time4=df8.format(new Date());
//輸出日期
System.out.println("SHORT:"+date1+" "+time1);
System.out.println("FULL:"+date2+" "+time2);
System.out.println("MEDIUM:"+date3+" "+time3);
System.out.println("LONG:"+date4+" "+time4);
SimpleDateFormat 類
如果使用 DateFormat 類格式化日期/時間并不能滿足要求菲盾,那么就需要使用 DateFormat 類的子類——SimpleDateFormat。
SimpleDateFormat 是一個以與語言環(huán)境有關(guān)的方式來格式化和解析日期的具體類各淀,它允許進(jìn)行格式化(日期→文本)懒鉴、解析(文本→日期)和規(guī)范化。SimpleDateFormat 使得可以選擇任何用戶定義的日期/時間格式的模式碎浇。
SimpleDateFormat 類主要有如下 3 種構(gòu)造方法临谱。
1、 SimpleDateFormat():用默認(rèn)的格式和默認(rèn)的語言環(huán)境構(gòu)造 SimpleDateFormat奴璃。
2悉默、 SimpleDateFormat(String pattern):用指定的格式和默認(rèn)的語言環(huán)境構(gòu)造 SimpleDateF ormat。
3苟穆、 SimpleDateFormat(String pattern,Locale locale):用指定的格式和指定的語言環(huán)境構(gòu)造 SimpleDateF ormat抄课。