今天在網上找日期的處理方法,無意找到這篇文章,感覺還不錯,就把它貼了上來。
如果想要取得系統的時間,可以使用System.currentTimeMillis()方法,例如:
DateDemo.java?

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

args)?
{
????????System.out.println(System.currentTimeMillis());
????}
} ?
執行結果會顯示從1970年1月1日開始到取得系統時間為止所經過的毫秒數,例如1115346430703這個數字,但這樣的數字沒有人確切了解它的意 義是什么,您可以使用Date類別來讓這個數字變的更有意義一些,例如:
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());
????}
} ?

執行的結果如下:
? Fri May 06 10:31:13 GMT+08:00 2005
? 1115346673531 ??
當您生成Date對象時,實際上它會使用System.currentTimeMillis()來取得系統時間,而您使用
toString()方法時,會將取得的1970年1月1日至今的毫秒數轉為dow mon dd hh:mm:ss zzz yyyy的格式,分別是:「星期 月 日 時:分:秒 公元」;使用Date的getTime()方法則可以取得毫秒數。
如果您想要對日期時間作格式設定,則可以使用DateFormat來作格式化,先來看看它的子類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));
????}
}?


執行結果: ??? 星期五-05-06-2005
DateFormat會依計算機上的區域設定顯示時間格式,EE表示星期,MM表示月份、dd表示日期,而yyyy是公元,每個字符的設定都各有其意義,您
可以參考 SimpleDateFormat 的API說明了解每個字符設定的意義。
您也可以直接從DateFormat指定格式生成DateFormat的實例,例如:
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實例時,可以指定的參數是日期格式與時間格式,以上所指定的格式依訊息詳細度 區分,執行結果如下:
2005/5/6 上午 10:45
2005/5/6 上午 10:45:25
2005年5月6日 上午10時45分25秒
2005年5月6日 星期五 上午10時45分25秒 GMT+08:00??
您也可以使用getDateInstance()取得DateFormat實 例,并同時指定日期的區域顯示方式,例如:
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));?
????}
}?


這邊指定了美國的時間顯示方式,執行結果如下:
??5/6/05
? May 6, 2005
? May 6, 2005
? Friday, May 6, 2005
?
-------------------------------------------------------------------------------------------------
1. 怎樣計算兩個時間之間的間隔?
間隔=Date1.getTime()-Date2.getTime();得出來的是毫秒數.
除1000是秒,再除60是分,再除60是小時..............................
記住java標準庫中所有時間類都以此為基礎轉化的,只是他寫好了一些
轉化的方法給你用而已.但都離不開這個毫秒數為基礎.
2. t=Calendar.getInstance();m=t.get(t.MONTH)+1;這里為什么要加一?
在java語言里,date的month的取值范圍是:0~11,與人們的自然表達上相差1。
3. 系統時間與當前日期的區別?
系統時間確切的說應該是
System.currentTimeMillis();
new Date()是當前日期,雖然它getTime();和System.currentTimeMillis();
一樣,但System.currentTimeMillis();
4. 如何計算兩個日期的天數差值?
long?beginTime?=?beginDate.getTime();?
long?endTime2?=?endDate.getTime();?
long?betweenDays?=?(long)((endTime?-?beginTime)?/?(1000?*?60?*?60?*24)?+?0.5);??
5. 如何比較日期時間大小?
第一種方法:
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();//當前時間\r?
long?nowTime=nowDate.getTime;?
long?lastTime=userTime.longValue();//以前的時間\r?
long?time=nowTime-lastTime;//時間相減比較。?
if(time>(long)60000)//1分鐘{}?另外可用以下參考
用時間戳,Date.getTime()可以把當前時間改成時間戳,
用CompareTo();
用before(),after(),equals();
6. 格式化日期的問題\r
目的:
第一次求日期
java.text.SimpleDateFormat?formatter?=?new?java.text.SimpleDateFormat("yyyy-MM-dd");?
String?riqi=formatter.format(currentTime_1);?
第二次求時間\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);?

得到的結果是
2002-02-19和115324(11點53分24秒)
實現:
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+"點\\"+mm+"分"+ss+"秒\\";?
String?newdir=year+month+day;?
String?wenjian?=?hh+mm+ss;?7. 怎么得到一個月的天數?
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");??
???????}??


???????/**?*//**??
?????????*??以指定的格式來格式化日期??
?????????*??
?????????*??@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;??
???????}??


---------------------------------------------------------------?
------------------------------------------------------------------------------------------------------------------
來個簡單點的,也許有點用?
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);??
???????????}??


???????????/**?*//**??
?????????????*??返回小時??
?????????????*????
?????????????*??@param??date??
?????????????*????????????????????????日期??
?????????????*??@return??返回小時??
?????????????*/??

???????????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");??
???????????}??


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

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


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

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


???????????/**?*//**??
?????????????*??日期相加??
?????????????*????
?????????????*??@param??date??
?????????????*????????????????????????日期??
?????????????*??@param??day??
?????????????*????????????????????????天數??
?????????????*??@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