更新時(shí)間:2019-09-07 09:00:00 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽6719次
今天動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)小編為大家介紹“java中的Date類(lèi)的使用方法”,希望此文能夠幫助到正在學(xué)習(xí)java的零基礎(chǔ)學(xué)員,下面就隨下小編一起看看java中的Date類(lèi)的使用方法都有拿些?
一、 Date類(lèi)對(duì)象的創(chuàng)建
1、創(chuàng)建一個(gè)當(dāng)前時(shí)間的Date對(duì)象
//創(chuàng)建一個(gè)代表系統(tǒng)當(dāng)前日期的Date對(duì)象
Date d = new Date();
2、創(chuàng)建一個(gè)我們指定的時(shí)間的Date對(duì)象:
使用帶參數(shù)的構(gòu)造方法Date(int year, int month, int day) ,可以構(gòu)造指定日期的Date類(lèi)對(duì)象,Date類(lèi)中年份的參數(shù)應(yīng)該是實(shí)際需要代表的年份減去1900,實(shí)際需要代表的月份減去1以后的值。
//創(chuàng)建一個(gè)代表2014年6月12號(hào)的Date對(duì)象
Date d1 = new Date(2014-1900, 6-1, 12); (注意參數(shù)的設(shè)置)
3、正確獲得一個(gè)date對(duì)象所包含的信息
如:Date d2 = new Date(2014-1900, 6-1, 12);
//獲得年份 (注意年份要加上1900,這樣才是日期對(duì)象d2所代表的年份)
int year = d2.getYear() + 1900;
//獲得月份 (注意月份要加1,這樣才是日期對(duì)象d2所代表的月份)
int month = d2.getMonth() + 1;
//獲得日期
int date = d2.getDate();
//獲得小時(shí)
int hour = d2.getHours();//不設(shè)置默認(rèn)為0
//獲得分鐘
int minute = d2.getMinutes();
//獲得秒
int second = d2.getSeconds();
//獲得星期 (注意:0代表星期日、1代表星期1、2代表星期2,其他的一次類(lèi)推了)
int day = d2.getDay();
二、Calendar類(lèi)
Calendar類(lèi)的功能要比Date類(lèi)強(qiáng)大很多,可以方便的進(jìn)行日期的計(jì)算,獲取日期中的信息時(shí)考慮了時(shí)區(qū)等問(wèn)題。而且在實(shí)現(xiàn)方式上也比Date類(lèi)要復(fù)雜一些
1、Calendar類(lèi)對(duì)象的創(chuàng)建
Calendar類(lèi)是一個(gè)抽象類(lèi),由于Calendar類(lèi)是抽象類(lèi),且Calendar類(lèi)的構(gòu)造方法是protected的,所以無(wú)法使用Calendar類(lèi)的構(gòu)造方法來(lái)創(chuàng)建對(duì)象,API中提供了getInstance方法用來(lái)創(chuàng)建對(duì)象。
2、創(chuàng)建一個(gè)代表系統(tǒng)當(dāng)前日期的Calendar對(duì)象
Calendar c = Calendar.getInstance();//默認(rèn)是當(dāng)前日期
3、創(chuàng)建一個(gè)指定日期的Calendar對(duì)象
使用Calendar類(lèi)代表特定的時(shí)間,需要首先創(chuàng)建一個(gè)Calendar的對(duì)象,然后再設(shè)定該對(duì)象中的年月日參數(shù)來(lái)完成。
//創(chuàng)建一個(gè)代表2014年5月9日的Calendar對(duì)象
Calendar c1 = Calendar.getInstance();
c1.set(2014, 5 - 1, 9);//調(diào)用:public final void set(int year,int month,int date)
4、Calendar類(lèi)對(duì)象信息的設(shè)置與獲得
(1)Calendar類(lèi)對(duì)象信息的設(shè)置
A、Set設(shè)置
如:Calendar c1 = Calendar.getInstance();
調(diào)用:public final void set(int year,int month,int date)
c1.set(2014, 6- 1, 9);//把Calendar對(duì)象c1的年月日分別設(shè)這為:2014、6、9
B、利用字段類(lèi)型設(shè)置
如果只設(shè)定某個(gè)字段,例如日期的值,則可以使用public void set(int field,int value)
//把 c1對(duì)象代表的日期設(shè)置為10號(hào),其它所有的數(shù)值會(huì)被重新計(jì)算
c1.set(Calendar.DATE,10);
//把c1對(duì)象代表的年份設(shè)置為2014年,其他的所有數(shù)值會(huì)被重新計(jì)算
c1.set(Calendar.YEAR,2015);
其他字段屬性set的意義以此類(lèi)推
Calendar類(lèi)中用一下這些常量表示不同的意義,jdk內(nèi)的很多類(lèi)其實(shí)都是采用的這種思想
Calendar.YEAR——年份
Calendar.MONTH——月份
Calendar.DATE——日期
Calendar.DAY_OF_MONTH——日期,和上面的字段意義相同
Calendar.HOUR——12小時(shí)制的小時(shí)
Calendar.HOUR_OF_DAY——24小時(shí)制的小時(shí)
Calendar.MINUTE——分鐘
Calendar.SECOND——秒
Calendar.DAY_OF_WEEK——星期幾
C、Add設(shè)置(可用與計(jì)算時(shí)間)
Calendar c1 = Calendar.getInstance();
//把c1對(duì)象的日期加上10,也就是c1所表的日期的10天后的日期,其它所有的數(shù)值會(huì)被重新計(jì)算
c1.add(Calendar.DATE, 10);
//把c1對(duì)象的日期加上-10,也就是c1所表的日期的10天前的日期,其它所有的數(shù)值會(huì)被重新計(jì)算
c1.add(Calendar.DATE, -10);
其他字段屬性的add的意義以此類(lèi)推
(2)Calendar類(lèi)對(duì)象信息的獲得(使用get())
Calendar c1 = Calendar.getInstance();
// 獲得年份
int year = c1.get(Calendar.YEAR);
// 獲得月份
int month = c1.get(Calendar.MONTH) + 1;(MONTH+1)
// 獲得日期
int date = c1.get(Calendar.DATE);
// 獲得小時(shí)
int hour = c1.get(Calendar.HOUR_OF_DAY);
// 獲得分鐘
int minute = c1.get(Calendar.MINUTE);
// 獲得秒
int second = c1.get(Calendar.SECOND);
// 獲得星期幾(注意(這個(gè)與Date類(lèi)是不同的):1代表星期日、2代表星期1、3代表星期二,以此類(lèi)推)
int day = c1.get(Calendar.DAY_OF_WEEK);
三、 GregorianCalendar類(lèi)
GregorianCalendar 是 Calendar 的一個(gè)具體子類(lèi),提供了世界上大多數(shù)國(guó)家使用的標(biāo)準(zhǔn)日歷系統(tǒng)。
1、GregorianCalendar類(lèi)對(duì)象的創(chuàng)建
GregorianCalendar有自己的構(gòu)造方法,而其父類(lèi)Calendar沒(méi)有公開(kāi)的構(gòu)造方法。
GregorianCalendar() 在具有默認(rèn)語(yǔ)言環(huán)境的默認(rèn)時(shí)區(qū)內(nèi)使用當(dāng)前時(shí)間構(gòu)造一個(gè)默認(rèn)的 GregorianCalendar。
在具有默認(rèn)語(yǔ)言環(huán)境的默認(rèn)時(shí)區(qū)內(nèi)構(gòu)造一個(gè)帶有給定日期設(shè)置的 GregorianCalendar。
GregorianCalendar(int year, int month, int dayOfMonth)
GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute) 。
GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute, int second)
2、創(chuàng)建一個(gè)代表當(dāng)前日期的GregorianCalendar對(duì)象
GregorianCalendar gc = new GregorianCalendar();
//創(chuàng)建一個(gè)代表2014年6月19日的GregorianCalendar對(duì)象(注意參數(shù)設(shè)置,與其父類(lèi)是一樣,月份要減去1)
GregorianCalendar gc = new GregorianCalendar(2014,6-1,19);
3、另外:GregorianCalendar有一個(gè)方法:boolean isLeapYear(int year) 確定給定的年份是否為閏年
四、DateFormat類(lèi)和SimpleDateFormat類(lèi)
public class SimpleDateFormat extends DateFormat 是一個(gè)以與語(yǔ)言環(huán)境相關(guān)的方式來(lái)格式化和分析日期的具體類(lèi)。(日期時(shí)間輸出的工具類(lèi))
它允許進(jìn)行日期格式化(日期 -> 文本)、分析(文本 -> 日期)和規(guī)范化。所以SimpleDateFormat類(lèi)可以實(shí)現(xiàn):String 到 Date,Date到String的互轉(zhuǎn)
五、日期類(lèi)對(duì)象之間的互轉(zhuǎn)

/* Date Long Calendar*/
Date類(lèi)對(duì)象與long型時(shí)間的互轉(zhuǎn)
//1.將Date類(lèi)的對(duì)象轉(zhuǎn)換為long型時(shí)間
Date d= new Date();
//使用對(duì)象的getTime()方法完成
long dLong = d.getTime();
//2.將long型時(shí)間轉(zhuǎn)換為Date類(lèi)的對(duì)象
long time = 1290876532190L;
//使用Date的構(gòu)造方法完成
Date d2 = new Date(time);
Calendar對(duì)象和long型時(shí)間之間的互轉(zhuǎn)
// 將Calendar對(duì)象轉(zhuǎn)換為相對(duì)時(shí)間
Calendar c = Calendar.getInstance();
long t1 = c.getTimeInMillis();
// 將long轉(zhuǎn)換為Calendar對(duì)象
Calendar c1 = Calendar.getInstance();
long t = 1252785271098L;
c1.setTimeInMillis(t1);
/* String Date Calendar 三者之間的相互轉(zhuǎn)換*/
Calendar對(duì)象和Date對(duì)象之間的互轉(zhuǎn)
//1 .將Calendar對(duì)象轉(zhuǎn)換為Date(c.getTime())
Calendar c = Calendar.getInstance();
Date d = c.getTime();
// 2.將Date轉(zhuǎn)換為Calendar對(duì)象(s.setTime(date))
Calendar c1 = Calendar.getInstance();
Date d1 = new Date();
//通過(guò)setTime()方法后,日歷c1所表示的日期就d1的日期
c1.setTime(d1);
String Calendar之間的轉(zhuǎn)換:
//1.Date 轉(zhuǎn)化String
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
String dateStr=sdf.format(new Date());
//2.String 轉(zhuǎn)化Date
String str="2010-5-27";
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
Date birthday = sdf.parse(str);
Date個(gè)Calendar對(duì)象之間的轉(zhuǎn)換
//1.Date 轉(zhuǎn)化為Calendar
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
//2.Calenda轉(zhuǎn)換為Date
Calendar calendar = Calendar.getInstance();
Date date =calendar.getTime();
Date和String對(duì)象之間的轉(zhuǎn)換
//1.Calendar 轉(zhuǎn)化 String
Calendar calendat = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd")0;
String dateStr = sdf.format(calendar.getTime());
//2.String 轉(zhuǎn)化Calendar
String str="2010-5-27";
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
Date date =sdf.parse(str);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
六、利用以上各個(gè)類(lèi)的功能,我們可以很簡(jiǎn)單的實(shí)現(xiàn)一些時(shí)間計(jì)算的功能,下面看幾個(gè)方法:
l、判斷是否是閏年
/**
* 給定一個(gè)年份判斷該年份是否為閏年
*/
public static boolean isLeapYear(int year) {
GregorianCalendar calendar = new GregorianCalendar();
return calendar.isLeapYear(year);
}
2、獲取當(dāng)前日期的字符串表示形式
/**
* 利用SimpleDateFormat獲取當(dāng)前日期的字符串表示形式 格式:2009-5-05
*/
public static String getCurrentDate() {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
return dateFormat.format(System.currentTimeMillis());
}
3、給出任意一個(gè)年月日得到該天是星期幾
/**
* 給出任意一個(gè)年月日得到該天是星期幾
*/
public static int getWeek(String date) {
// 注意參數(shù)的大小寫(xiě)格式
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
try {
Date d = dateFormat.parse(date);
c.setTime(d);
} catch (ParseException e) {
}
return c.get(Calendar.DAY_OF_WEEK)-1;
}
4、 獲得今天n天以后或者n天以前是那一天
/**
* 獲得距離今天n天的那一天的日期
*/
public static String getDistanceDay(int day) {
Calendar calen = Calendar.getInstance();
calen.add(Calendar.DAY_OF_MONTH, day);
Date date = calen.getTime();
// 這里也個(gè)用SimpleDateFormat的format()進(jìn)行格式化,然后以字符串形式返回格式化后的date
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
return dateFormat.format(date);
}
5、 獲得距離指定日期n天的那一天的日期
/**
* 獲得距離指定日期n天的那一天的日期
*/
public static String getDistanceDay(String date, int day) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
Date d;
Calendar c =Calendar.getInstance();
try {
d = dateFormat.parse(date);
c.setTime(d);
c.add(Calendar.DATE, day);
} catch (ParseException e) {
e.printStackTrace();
}
return dateFormat.format(c.getTime());
}
6、獲得給定兩個(gè)日期相差的天數(shù)
/**
* 獲得給定兩個(gè)日期相差的天數(shù)
*
*/
public static long getGapDays(String date1, String date2) {
String[] d1 = date1.split("-");
String[] d2 = date2.split("-");
Calendar c = Calendar.getInstance();
c.set(Integer.parseInt(d1[0]), Integer.parseInt(d1[1]), Integer
.parseInt(d1[2]), 0, 0, 0);
long l1 = c.getTimeInMillis();
c.set(Integer.parseInt(d2[0]), Integer.parseInt(d2[1]), Integer
.parseInt(d2[2]), 0, 0, 0);
long l2 = c.getTimeInMillis();
return (Math.abs(l1 - l2) / (24 * 60 * 60 * 1000));
}
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)小編介紹的“java中的Date類(lèi)的使用方法”的內(nèi)容,希望能夠幫助到大家,更多java資訊最新內(nèi)容請(qǐng)繼續(xù)關(guān)注動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)官網(wǎng),每天會(huì)有精彩內(nèi)容分享與你。
相關(guān)免費(fèi)視頻教程推薦
javase基礎(chǔ)視頻教程下載——Date日期類(lèi):http://www.soulsinkind.com/xiazai/2520.html
相關(guān)閱讀
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)