如果想要取得系統的時間,可以使用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);??
轉自:
http://www.513pc.net/bbs/dispbbs.asp?boardid=4&id=239&star=1&page=1