如果想要取得系統的時間,可以使用System.currentTimeMillis()方法,例如:
public class DateDemo {
????public static void main(String[]
args) {
????????System.out.println(System.currentTimeMillis());
????}
}
執行結果會顯示從1970年1月1日開始到取得系統時間為止所經過的毫秒數,例如1115346430703這個數字,但這樣的數字沒有人確切了解它的意 義是什么,您可以使用Date類別來讓這個數字變的更有意義一些,例如:
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如何使用:
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));
????}
}
執行結果:
DateFormat會依計算機上的區域設定顯示時間格式,EE表示星期,MM表示月份、dd表示日期,而yyyy是公元,每個字符的設定都各有其意義,您
可以參考
SimpleDateFormat 的API說明了解每個字符設定的意義。
您也可以直接從DateFormat指定格式生成DateFormat的實例,例如:
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實 例,并同時指定日期的區域顯示方式,例如:
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