今天在網(wǎng)上找日期的處理方法,無(wú)意找到這篇文章,感覺(jué)還不錯(cuò),就把它貼了上來(lái)。
如果想要取得系統(tǒng)的時(shí)間,可以使用System.currentTimeMillis()方法,例如:
DateDemo.java?

public?class?DateDemo?
{
????public?static?void?main(String[]

args)?
{
????????System.out.println(System.currentTimeMillis());
????}
} ?
執(zhí)行結(jié)果會(huì)顯示從1970年1月1日開(kāi)始到取得系統(tǒng)時(shí)間為止所經(jīng)過(guò)的毫秒數(shù),例如1115346430703這個(gè)數(shù)字,但這樣的數(shù)字沒(méi)有人確切了解它的意 義是什么,您可以使用Date類(lèi)別來(lái)讓這個(gè)數(shù)字變的更有意義一些,例如:
DateDemo.java

import?java.util.Date;


public?class?DateDemo?
{
????public?static?void?main(String[]

args)?
{
????????Date?date?=?new?Date();
????????
????????System.out.println(date.toString());
????????System.out.println(date.getTime());
????}
} ?

執(zhí)行的結(jié)果如下:
? Fri May 06 10:31:13 GMT+08:00 2005
? 1115346673531 ??
當(dāng)您生成Date對(duì)象時(shí),實(shí)際上它會(huì)使用System.currentTimeMillis()來(lái)取得系統(tǒng)時(shí)間,而您使用
toString()方法時(shí),會(huì)將取得的1970年1月1日至今的毫秒數(shù)轉(zhuǎn)為dow mon dd hh:mm:ss zzz yyyy的格式,分別是:「星期 月 日 時(shí):分:秒 公元」;使用Date的getTime()方法則可以取得毫秒數(shù)。
如果您想要對(duì)日期時(shí)間作格式設(shè)定,則可以使用DateFormat來(lái)作格式化,先來(lái)看看它的子類(lèi)SimpleDateFormat如何使用:
DateDemo.java
import?java.text.DateFormat;
import?java.text.SimpleDateFormat;
import?java.util.Date;


public?class?DateDemo?
{
????public?static?void?main(String[]

args)?
{
????????Date?date?=?new?Date();

????????DateFormat?dateFormat?=?
????????????new
SimpleDateFormat("EE-MM-dd-yyyy");
????????
????????System.out.println(dateFormat.format(date));
????}
}?


執(zhí)行結(jié)果: ??? 星期五-05-06-2005
DateFormat會(huì)依計(jì)算機(jī)上的區(qū)域設(shè)定顯示時(shí)間格式,EE表示星期,MM表示月份、dd表示日期,而yyyy是公元,每個(gè)字符的設(shè)定都各有其意義,您
可以參考 SimpleDateFormat 的API說(shuō)明了解每個(gè)字符設(shè)定的意義。
您也可以直接從DateFormat指定格式生成DateFormat的實(shí)例,例如:
DateDemo.java

import?java.text.DateFormat;
import?java.util.Date;


public?class?DateDemo?
{
????public?static?void?main(String[]

args)?
{
????????Date?date?=?new?Date();?

????????DateFormat?shortFormat?=?
????????????DateFormat.getDateTimeInstance(?
????????????????DateFormat.SHORT,
DateFormat.SHORT);?

????????DateFormat?mediumFormat?=?
????????????DateFormat.getDateTimeInstance(?
????????????????DateFormat.MEDIUM,
DateFormat.MEDIUM);?

????????DateFormat?longFormat?=?
????????????DateFormat.getDateTimeInstance(?
????????????????DateFormat.LONG,?DateFormat.LONG);?

????????DateFormat?fullFormat?=?
????????????DateFormat.getDateTimeInstance(?
????????????????DateFormat.FULL,
DateFormat.FULL);?

????????System.out.println(shortFormat.format(date));?
????????System.out.println(mediumFormat.format(date));?
????????System.out.println(longFormat.format(date));?
????????System.out.println(fullFormat.format(date));?
????}
}?

在使用getDateTimeInstance()取得DateFormat實(shí)例時(shí),可以指定的參數(shù)是日期格式與時(shí)間格式,以上所指定的格式依訊息詳細(xì)度 區(qū)分,執(zhí)行結(jié)果如下:
2005/5/6 上午 10:45
2005/5/6 上午 10:45:25
2005年5月6日 上午10時(shí)45分25秒
2005年5月6日 星期五 上午10時(shí)45分25秒 GMT+08:00??
您也可以使用getDateInstance()取得DateFormat實(shí) 例,并同時(shí)指定日期的區(qū)域顯示方式,例如:
DateDemo.java?????

import?java.text.DateFormat;
import?java.util.Date;
import?java.util.Locale;


public?class?DateDemo?
{
????public?static?void?main(String[]

args)?
{
????????Date?date?=?new?Date();?

????????Locale?locale?=?new
Locale("en",?"US");
????????DateFormat?shortFormat?=?
????????????DateFormat.getDateInstance(?
????????????????DateFormat.SHORT,
locale);?

????????DateFormat?mediumFormat?=?
????????????DateFormat.getDateInstance(?
????????????????DateFormat.MEDIUM,
locale);?

????????DateFormat?longFormat?=?
????????????DateFormat.getDateInstance(?
????????????????DateFormat.LONG,?locale);?

????????DateFormat?fullFormat?=?
????????????DateFormat.getDateInstance(?
????????????????DateFormat.FULL,?locale);?

????????System.out.println(shortFormat.format(date));?
????????System.out.println(mediumFormat.format(date));?
????????System.out.println(longFormat.format(date));?
????????System.out.println(fullFormat.format(date));?
????}
}?


這邊指定了美國(guó)的時(shí)間顯示方式,執(zhí)行結(jié)果如下:
??5/6/05
? May 6, 2005
? May 6, 2005
? Friday, May 6, 2005
?
-------------------------------------------------------------------------------------------------
1. 怎樣計(jì)算兩個(gè)時(shí)間之間的間隔?
間隔=Date1.getTime()-Date2.getTime();得出來(lái)的是毫秒數(shù).
除1000是秒,再除60是分,再除60是小時(shí)..............................
記住java標(biāo)準(zhǔn)庫(kù)中所有時(shí)間類(lèi)都以此為基礎(chǔ)轉(zhuǎn)化的,只是他寫(xiě)好了一些
轉(zhuǎn)化的方法給你用而已.但都離不開(kāi)這個(gè)毫秒數(shù)為基礎(chǔ).
2. t=Calendar.getInstance();m=t.get(t.MONTH)+1;這里為什么要加一?
在java語(yǔ)言里,date的month的取值范圍是:0~11,與人們的自然表達(dá)上相差1。
3. 系統(tǒng)時(shí)間與當(dāng)前日期的區(qū)別?
系統(tǒng)時(shí)間確切的說(shuō)應(yīng)該是
System.currentTimeMillis();
new Date()是當(dāng)前日期,雖然它getTime();和System.currentTimeMillis();
一樣,但System.currentTimeMillis();
4. 如何計(jì)算兩個(gè)日期的天數(shù)差值?
long?beginTime?=?beginDate.getTime();?
long?endTime2?=?endDate.getTime();?
long?betweenDays?=?(long)((endTime?-?beginTime)?/?(1000?*?60?*?60?*24)?+?0.5);??
5. 如何比較日期時(shí)間大小?
第一種方法:
use Calendar object to compare
java.util.Calendar class can be used to compare date. In order to do this,
you guy should parse that string into int year, month, day and construct a
Calendar object, and then do comparison.
Below?is?a?sample?

StringTokenizer?token?=?new?StringTokenizer(your?string,"-");?
int?year?=?Integer.parseInt(token.nextToken());?
int?month?=?Integer.parseInt(token.nextToken());?
int?day?=?Integer.parseInt(token.nextToken());?
Calendar?date?=?Calendar.getInstance();?
date.set(year,month,day);?
Calendar?today?=?Calendar.getInstacne();?

if(date.after(today))
{?
//
?
}?

第二種方法
Date?nowDate=new?Date();//當(dāng)前時(shí)間\r?
long?nowTime=nowDate.getTime;?
long?lastTime=userTime.longValue();//以前的時(shí)間\r?
long?time=nowTime-lastTime;//時(shí)間相減比較。?
if(time>(long)60000)//1分鐘{}?另外可用以下參考
用時(shí)間戳,Date.getTime()可以把當(dāng)前時(shí)間改成時(shí)間戳,
用CompareTo();
用before(),after(),equals();
6. 格式化日期的問(wèn)題\r
目的:
第一次求日期
java.text.SimpleDateFormat?formatter?=?new?java.text.SimpleDateFormat("yyyy-MM-dd");?
String?riqi=formatter.format(currentTime_1);?
第二次求時(shí)間\r
java.text.DateFormat?format1?=?new?java.text.SimpleDateFormat("hhmmss");?
java.util.Date?currentTime_2?=?new?java.util.Date();?
String?shijian=format1.format(currentTime_2);?

得到的結(jié)果是
2002-02-19和115324(11點(diǎn)53分24秒)
實(shí)現(xiàn):
java.text.SimpleDateFormat?formatter?=?new?java.text.SimpleDateFormat("yyyy-MM-dd-H-mm-ss");?
java.util.Date?currentTime_1?=?new?java.util.Date();?
String?str_date?=?formatter.format(currentTime_1);?
StringTokenizer?token?=?new?StringTokenizer(str_date,"-");?
String?year?=?token.nextToken();?
String?month=?token.nextToken();?
String?day?=?token.nextToken();?
String?hh?=?token.nextToken();?
String?mm?=?token.nextToken();?
String?ss?=?token.nextToken();?
String?riqi=year+"年\\"+month+"月"+day+"日"+"?"+hh+"點(diǎn)\\"+mm+"分"+ss+"秒\\";?
String?newdir=year+month+day;?
String?wenjian?=?hh+mm+ss;?7. 怎么得到一個(gè)月的天數(shù)?
java.util.Calendar?date?=?java.util.Calendar.getInstance();?
System.out.println(date.getActualMaximum(date.DAY_OF_MONTH));? ------------------------------------------------------------------------------------------------
取得指定月份的第一天與取得指定月份的最后一天?

???????/**?*//**??
?????????*??取得指定月份的第一天??
?????????*??
?????????*??@param??strdate??String??
?????????*??@return??String??
?????????*/??
???????public??String??getMonthBegin(String??strdate)??

???????
{??
???????????????java.util.Date??date??=??parseFormatDate(strdate);??
???????????????return??formatDateByFormat(date,"yyyy-MM")??+??"-01";??
???????}??


???????/**?*//**??
?????????*??取得指定月份的最后一天??
?????????*??
?????????*??@param??strdate??String??
?????????*??@return??String??
?????????*/??
???????public??String??getMonthEnd(String??strdate)??

???????
{??
???????????????java.util.Date??date??=??parseFormatDate(getMonthBegin(strdate));??
???????????????Calendar??calendar??=??Calendar.getInstance();??
???????????????calendar.setTime(date);??
???????????????calendar.add(Calendar.MONTH,1);??
???????????????calendar.add(Calendar.DAY_OF_YEAR,??-1);??
???????????????return??formatDate(calendar.getTime());??
???????}??


???????/**?*//**??
?????????*??常用的格式化日期??
?????????*??
?????????*??@param??date??Date??
?????????*??@return??String??
?????????*/??
???????public??String??formatDate(java.util.Date??date)??

???????
{??
???????????????return??formatDateByFormat(date,"yyyy-MM-dd");??
???????}??


???????/**?*//**??
?????????*??以指定的格式來(lái)格式化日期??
?????????*??
?????????*??@param??date??Date??
?????????*??@param??format??String??
?????????*??@return??String??
?????????*/??
???????public??String??formatDateByFormat(java.util.Date??date,String??format)??

???????
{??
???????????????String??result??=??"";??
???????????????if(date??!=??null)??

???????????????
{??
???????????????????????try??

???????????????????????
{??
???????????????????????????????SimpleDateFormat??sdf??=??new??SimpleDateFormat(format);??
???????????????????????????????result??=??sdf.format(date);??
???????????????????????}??
???????????????????????catch(Exception??ex)??

???????????????????????
{??
???????????????????????????????LOGGER.info("date:"??+??date);??
???????????????????????????????ex.printStackTrace();??
???????????????????????}??
???????????????}??
???????????????return??result;??
???????}??


---------------------------------------------------------------?
------------------------------------------------------------------------------------------------------------------
來(lái)個(gè)簡(jiǎn)單點(diǎn)的,也許有點(diǎn)用?
package??com.app.util;??


/**?*//**??
*??日期操作??
*????
*??@author??xxx??
*??@version??2.0??jdk1.4.0??tomcat5.1.0??*??Updated??Date:2005/03/10??
*/??

public??class??DateUtil??
{??

???????????/**?*//**??
?????????????*??格式化日期??
?????????????*????
?????????????*??@param??dateStr??
?????????????*????????????????????????字符型日期??
?????????????*??@param??format??
?????????????*????????????????????????格式??
?????????????*??@return??返回日期??
?????????????*/??

???????????public??static??java.util.Date??parseDate(String??dateStr,??String??format)??
{??
???????????????????????java.util.Date??date??=??null;??

???????????????????????try??
{??
???????????????????????????????????java.text.DateFormat??df??=??new??java.text.SimpleDateFormat(format);??
???????????????????????????????????String??dt=Normal.parse(dateStr).replaceAll(??
???????????????????????????????????????????????????????????"-",??"/");??

???????????????????????????????????if((!dt.equals(""))&&(dt.length()<format.length()))
{??
???????????????????????????????????????????????dt+=format.substring(dt.length()).replaceAll("[YyMmDdHhSs]","0");??
???????????????????????????????????}??
???????????????????????????????????date??=??(java.util.Date)??df.parse(dt);??

???????????????????????}??catch??(Exception??e)??
{??
???????????????????????}??
???????????????????????return??date;??
???????????}??


???????????public??static??java.util.Date??parseDate(String??dateStr)??
{??
???????????????????????return??parseDate(dateStr,??"yyyy/MM/dd");??
???????????}??


???????????public??static??java.util.Date??parseDate(java.sql.Date??date)??
{??
???????????????????????return??date;??
???????????}??
?????????????

???????????public??static??java.sql.Date??parseSqlDate(java.util.Date??date)??
{??
???????????????????????if??(date??!=??null)??
???????????????????????????????????return??new??java.sql.Date(date.getTime());??
???????????????????????else??
???????????????????????????????????return??null;??
???????????}??


???????????public??static??java.sql.Date??parseSqlDate(String??dateStr,??String??format)??
{??
???????????????????????java.util.Date??date??=??parseDate(dateStr,??format);??
???????????????????????return??parseSqlDate(date);??
???????????}??


???????????public??static??java.sql.Date??parseSqlDate(String??dateStr)??
{??
???????????????????????return??parseSqlDate(dateStr,??"yyyy/MM/dd");??
???????????}??

?????????????
???????????public??static??java.sql.Timestamp??parseTimestamp(String??dateStr,??

???????????????????????????????????String??format)??
{??
???????????????????????java.util.Date??date??=??parseDate(dateStr,??format);??

???????????????????????if??(date??!=??null)??
{??
???????????????????????????????????long??t??=??date.getTime();??
???????????????????????????????????return??new??java.sql.Timestamp(t);??
???????????????????????}??else??
???????????????????????????????????return??null;??
???????????}??


???????????public??static??java.sql.Timestamp??parseTimestamp(String??dateStr)??
{??
???????????????????????return??parseTimestamp(dateStr,??"yyyy/MM/dd??HH:mm:ss");??
???????????}??


???????????/**?*//**??
?????????????*??格式化輸出日期??
?????????????*????
?????????????*??@param??date??
?????????????*????????????????????????日期??
?????????????*??@param??format??
?????????????*????????????????????????格式??
?????????????*??@return??返回字符型日期??
?????????????*/??

???????????public??static??String??format(java.util.Date??date,??String??format)??
{??
???????????????????????String??result??=??"";??

???????????????????????try??
{??

???????????????????????????????????if??(date??!=??null)??
{??
???????????????????????????????????????????????java.text.DateFormat??df??=??new??java.text.SimpleDateFormat(format);??
???????????????????????????????????????????????result??=??df.format(date);??
???????????????????????????????????}??

???????????????????????}??catch??(Exception??e)??
{??
???????????????????????}??
???????????????????????return??result;??
???????????}??


???????????public??static??String??format(java.util.Date??date)??
{??
???????????????????????return??format(date,??"yyyy/MM/dd");??
???????????}??


???????????/**?*//**??
?????????????*??返回年份??
?????????????*????
?????????????*??@param??date??
?????????????*????????????????????????日期??
?????????????*??@return??返回年份??
?????????????*/??

???????????public??static??int??getYear(java.util.Date??date)??
{??
???????????????????????java.util.Calendar??c??=??java.util.Calendar.getInstance();??
???????????????????????c.setTime(date);??
???????????????????????return??c.get(java.util.Calendar.YEAR);??
???????????}??


???????????/**?*//**??
?????????????*??返回月份??
?????????????*????
?????????????*??@param??date??
?????????????*????????????????????????日期??
?????????????*??@return??返回月份??
?????????????*/??

???????????public??static??int??getMonth(java.util.Date??date)??
{??
???????????????????????java.util.Calendar??c??=??java.util.Calendar.getInstance();??
???????????????????????c.setTime(date);??
???????????????????????return??c.get(java.util.Calendar.MONTH)??+??1;??
???????????}??


???????????/**?*//**??
?????????????*??返回日份??
?????????????*????
?????????????*??@param??date??
?????????????*????????????????????????日期??
?????????????*??@return??返回日份??
?????????????*/??

???????????public??static??int??getDay(java.util.Date??date)??
{??
???????????????????????java.util.Calendar??c??=??java.util.Calendar.getInstance();??
???????????????????????c.setTime(date);??
???????????????????????return??c.get(java.util.Calendar.DAY_OF_MONTH);??
???????????}??


???????????/**?*//**??
?????????????*??返回小時(shí)??
?????????????*????
?????????????*??@param??date??
?????????????*????????????????????????日期??
?????????????*??@return??返回小時(shí)??
?????????????*/??

???????????public??static??int??getHour(java.util.Date??date)??
{??
???????????????????????java.util.Calendar??c??=??java.util.Calendar.getInstance();??
???????????????????????c.setTime(date);??
???????????????????????return??c.get(java.util.Calendar.HOUR_OF_DAY);??
???????????}??


???????????/**?*//**??
?????????????*??返回分鐘??
?????????????*????
?????????????*??@param??date??
?????????????*????????????????????????日期??
?????????????*??@return??返回分鐘??
?????????????*/??

???????????public??static??int??getMinute(java.util.Date??date)??
{??
???????????????????????java.util.Calendar??c??=??java.util.Calendar.getInstance();??
???????????????????????c.setTime(date);??
???????????????????????return??c.get(java.util.Calendar.MINUTE);??
???????????}??


???????????/**?*//**??
?????????????*??返回秒鐘??
?????????????*????
?????????????*??@param??date??
?????????????*????????????????????????日期??
?????????????*??@return??返回秒鐘??
?????????????*/??

???????????public??static??int??getSecond(java.util.Date??date)??
{??
???????????????????????java.util.Calendar??c??=??java.util.Calendar.getInstance();??
???????????????????????c.setTime(date);??
???????????????????????return??c.get(java.util.Calendar.SECOND);??
???????????}??


???????????/**?*//**??
?????????????*??返回毫秒??
?????????????*????
?????????????*??@param??date??
?????????????*????????????????????????日期??
?????????????*??@return??返回毫秒??
?????????????*/??

???????????public??static??long??getMillis(java.util.Date??date)??
{??
???????????????????????java.util.Calendar??c??=??java.util.Calendar.getInstance();??
???????????????????????c.setTime(date);??
???????????????????????return??c.getTimeInMillis();??
???????????}??


???????????/**?*//**??
?????????????*??返回字符型日期??
?????????????*????
?????????????*??@param??date??
?????????????*????????????????????????日期??
?????????????*??@return??返回字符型日期??
?????????????*/??

???????????public??static??String??getDate(java.util.Date??date)??
{??
???????????????????????return??format(date,??"yyyy/MM/dd");??
???????????}??


???????????/**?*//**??
?????????????*??返回字符型時(shí)間??
?????????????*????
?????????????*??@param??date??
?????????????*????????????????????????日期??
?????????????*??@return??返回字符型時(shí)間??
?????????????*/??

???????????public??static??String??getTime(java.util.Date??date)??
{??
???????????????????????return??format(date,??"HH:mm:ss");??
???????????}??


???????????/**?*//**??
?????????????*??返回字符型日期時(shí)間??
?????????????*????
?????????????*??@param??date??
?????????????*????????????????????????日期??
?????????????*??@return??返回字符型日期時(shí)間??
?????????????*/??

???????????public??static??String??getDateTime(java.util.Date??date)??
{??
???????????????????????return??format(date,??"yyyy/MM/dd??HH:mm:ss");??
???????????}??


???????????/**?*//**??
?????????????*??日期相加??
?????????????*????
?????????????*??@param??date??
?????????????*????????????????????????日期??
?????????????*??@param??day??
?????????????*????????????????????????天數(shù)??
?????????????*??@return??返回相加后的日期??
?????????????*/??

???????????public??static??java.util.Date??addDate(java.util.Date??date,??int??day)??
{??
???????????????????????java.util.Calendar??c??=??java.util.Calendar.getInstance();??
???????????????????????c.setTimeInMillis(getMillis(date)??+??((long)??day)??*??24??*??3600??*??1000);??
???????????????????????return??c.getTime();??
???????????}??


???????????/**?*//**??
?????????????*??日期相減??
?????????????*????
?????????????*??@param??date??
?????????????*????????????????????????日期??
?????????????*??@param??date1??
?????????????*????????????????????????日期??
?????????????*??@return??返回相減后的日期??
?????????????*/??

???????????public??static??int??diffDate(java.util.Date??date,??java.util.Date??date1)??
{??
???????????????????????return??(int)??((getMillis(date)??-??getMillis(date1))??/??(24??*??3600??*??1000));??
???????????}??????????????
}??

Calendar??now??=??Calendar.getInstance();??
int??year??=??now.get(Calendar.YEAR);??
int??date??=??now.get(Calendar.DAY_OF_MONTH);??
int??month??=??now.get(Calendar.MONTH)??+??1;??
int??hour??=??now.get(Calendar.HOUR);??
int??min??=??now.get(Calendar.MINUTE);??
int??sec??=??now.get(Calendar.SECOND);??Trackback :http://www.513pc.net/bbs/dispbbs.asp?boardid=4&id=239&star=1&page=1