java日期相關(guān)類實(shí)例詳解
一、Date類
類 Date 表示特定的瞬間,精確到毫秒。用距離1970年1月1日00:00:00的毫秒數(shù)(long)類型來(lái)表示一個(gè)特定的時(shí)間點(diǎn),該值可正可負(fù)。
Date類中很多方法已經(jīng)過(guò)時(shí),使用Calendar來(lái)替代。
常用方法有
long getTime()
void setTime(long time)
public class T01Date {
public static void main(String[] args) {
//getTime():返回的時(shí)間是距離1970年的毫秒數(shù).值不受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;//時(shí)間設(shè)置為明日此時(shí)
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根據(jù)特定的日期格式在Date和字符串之間轉(zhuǎn)換
常用方法
String format(Date date):將日期按照指定格式轉(zhuǎn)換成字符串
Date parse(String str):將字符串按照指定格式轉(zhuǎn)換成Date
可以用來(lái)指定格式的字符
/**
* java.text.SimpleDateFormat
* 該類可以根據(jù)一個(gè)指定的日期格式將Date于String
* 之間相互轉(zhuǎn)換
* @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時(shí)ss分mm秒");
String str = sdf.format(now);
System.out.println(str);
//a 居然能區(qū)分上下午漢字
String strDate="2012年12月20日下午12點(diǎn)20分30秒";
SimpleDateFormat sdf2=new SimpleDateFormat("yyyy年MM月dd日ahh點(diǎn)ss分mm秒");
Date date=sdf2.parse(strDate);
System.out.println(date);
}
}
三、Calendar
java.util.Calendar是抽象類,主要用來(lái)對(duì)時(shí)間分量進(jìn)行計(jì)算。
常用方法
(1)Date和Calendar之間的轉(zhuǎn)換
//默認(rèn)創(chuàng)建出來(lái)的Calendar的實(shí)現(xiàn)類表示當(dāng)前系統(tǒng)時(shí)間
Calendar c=Calendar.getInstance();
//將Calendar轉(zhuǎn)換為Date
Date date=c.getTime();
//Date->Calendar
/*
* void setTime(Date date)
* 該方法可以使當(dāng)前Calendar表示給定的
* Date所表示的時(shí)間
* */
c.setTime(date);
}
}
(2)getInstance()方法
Calendar是抽象類,其提供了一個(gè)工廠方法:Calendar getInstance()用來(lái)獲取Calendar類型的實(shí)例
(3)get(int field)方法獲取時(shí)間分量
import java.util.Calendar;
/**
* Calendar提供了獲取各個(gè)時(shí)間分量的值的方法
* @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
/*
* 和天相關(guān)的時(shí)間分量
* 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]);
//獲取小時(shí),分鐘,秒 HOUR_OF_DAY:24小時(shí) HOUR:12小時(shí)
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()方法設(shè)置時(shí)間分量
/**
* 設(shè)置時(shí)間分量
* @author zc
*
*/
public class T06Calendar3 {
public static void main(String[] args){
//表示2008-08-08 20:08:08
//設(shè)置年
Calendar c=Calendar.getInstance();
c.set(Calendar.YEAR,2008);
//設(shè)置月,月從0開始
c.set(Calendar.MONTH,Calendar.AUGUST);
//設(shè)置日
c.set(Calendar.DATE, 8);
//設(shè)置時(shí)
c.set(Calendar.HOUR_OF_DAY,20);
//設(shè)置分
c.set(Calendar.SECOND,8);
//設(shè)置秒
c.set(Calendar.MINUTE,8);
System.out.println(c.getTime());
//!?。≡O(shè)置的時(shí)間分量超出后,會(huì)自行進(jìn)位
}
}
(5)add()方法在當(dāng)前時(shí)間分量基礎(chǔ)上修改時(shí)間分量
(6)getActualMaximum()獲取某個(gè)時(shí)間分量所允許的最大值
/**
* 獲取某個(gè)時(shí)間分量所允許的最大值
* @author zc
*/
public class T07Calendar4 {
public static void main(String[] args) {
Calendar c=Calendar.getInstance();
//查看當(dāng)月共多少天
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的一個(gè)綜合實(shí)例
@Test
public void test01() throws ParseException{
//要求用戶輸入一個(gè)日期,計(jì)算后,指定格式輸出日期
/*String--SimpleDateFormat()-->Date
Date-->Calendar
使用Calendar進(jìn)行相應(yīng)計(jì)算
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時(shí)ss分mm秒");
String strTime=sdf2.format(date);
System.out.println(strTime);
}
總結(jié)
以上就是本文關(guān)于java日期相關(guān)類實(shí)例詳解的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:Java開發(fā)基礎(chǔ)日期類代碼詳解、Java編程實(shí)現(xiàn)時(shí)間和時(shí)間戳相互轉(zhuǎn)換實(shí)例等,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
相關(guān)文章
Spring Boot如何使用Undertow代替Tomcat
這篇文章主要介紹了Spring Boot如何使用Undertow代替Tomcat,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
java 實(shí)現(xiàn)下壓棧的操作(能動(dòng)態(tài)調(diào)整數(shù)組大小)
這篇文章主要介紹了java 實(shí)現(xiàn)下壓棧的操作(能動(dòng)態(tài)調(diào)整數(shù)組大小),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02
mongo分布式鎖Java實(shí)現(xiàn)方法(推薦)
下面小編就為大家?guī)?lái)一篇mongo分布式鎖Java實(shí)現(xiàn)方法(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07
SpringBoot引入Redis報(bào)org.springframework.data.redis.core.RedisT
這篇文章主要介紹了SpringBoot引入Redis報(bào)org.springframework.data.redis.core.RedisTemplate類找不到錯(cuò)誤問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-09-09
解決SpringBoot引用別的模塊無(wú)法注入的問(wèn)題
這篇文章主要介紹了解決SpringBoot引用別的模塊無(wú)法注入的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
阿里規(guī)范:為何boolean類型變量命名禁用is開頭
這篇文章主要給大家介紹了關(guān)于阿里規(guī)范:為何boolean類型變量命名禁用is開頭的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
java中你的項(xiàng)目應(yīng)該如何正確分層
這篇文章主要介紹了java中你的項(xiàng)目應(yīng)該如何正確分層,業(yè)務(wù)分層對(duì)于代碼規(guī)范是比較重要,決定著以后的代碼是否可復(fù)用,感興趣的可以了解一下2021-04-04
Java中private關(guān)鍵字詳細(xì)用法實(shí)例以及解釋
這篇文章主要給大家介紹了關(guān)于Java中private關(guān)鍵字詳細(xì)用法實(shí)例以及解釋的相關(guān)資料,在Java中private是一種訪問(wèn)修飾符,它可以用來(lái)控制類成員的訪問(wèn)權(quán)限,文中將用法介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01

