一:date類
在jdk1.0中,date類是唯一的乙個代表時間的類,但是由於date類不便於實現國際化,所以從jdk1.1版本開始,推薦使用calendar類進行時間和日期處理。這裡簡單介紹一下date類的使用。
1.使用date類代表當前系統時間
date date = new date();
system.out.println(date);
使用date類的預設構造方法建立出來的物件就代表當前的時間,由於date類覆蓋了tostring()方法。所以可以直接輸出date型別的物件,顯示的結果如下:
sun aug 28 10:23:06 cst 2016
在該格式中,sun代表sunday(週日),aug 代表august(八月),28代表288號,cst代表china standard time(中國標準時間,也就是北京時間(東八區))。
2.使用date類代表指定時間
date date = new date(2016-1900,8-1,28);
system.out.println(date);
使用帶參的構造方法,可以構造指定日期的date類物件,date類中年份的引數應該是實際需要代表的年份減去1900,實際需要代表的月份減去1以後的值。顯示結果如下:
sun aug 28 00:00:00 cst 2016 代表的日期就是2023年8月28號
3.獲取date物件中的資訊
@suppresswarnings("all")
public class testmain
}
使用date類中的get方法,可以獲得date類物件的相關資訊(但可以看出,date類中的這些方法都已經過時)。需要注意的是使用getyear獲得的是date物件中年份減去1900以後的值,所以需要顯示對應的年份則需要在返回值的基礎上加1900,月份類似。在date類中還提供了getday方法,用於獲得date物件代表的時間是星期幾,date類規定週日是0,周一是1,周二是2,後續的依次類推。
4.date物件和相對時間的互轉
date date = new date(2016-1900,8-1,28);
long time = 1290876532190l;
long t = date.gettime(); //自2023年1月1日00:00:00 gmt 以來此日期表示的毫秒數
system.out.println(t); //結果是:1472313600000
date da = new date(time);
system.out.println(da); //結果是:sun aug 28 00:00:00 cst 2016
unix時間戳:單位是秒
毫秒時間戳 = 單位是毫秒(unix時間戳 * 1000)
date.gettime()
毫秒時間戳
date.gettime()/1000 返回的就是unix時間戳,和mysql的unix_timestamp函式是乙個意思,表示2023年1月1日00:00:00 gmt以來此date物件表示的
秒數,如果某個欄位是date型別,那麼返回@responsebody將會序列化成對應的date.gettime()
時間戳:返回自 2023年1月1日00:00:00gmt以來此 date 物件表示的
秒數
calendar nextday = calendar.getinstance();
nextday.add(calendar.day_of_year, 1);
nextday.set(calendar.hour_of_day, 23);
nextday.set(calendar.second, 59);
nextday.set(calendar.minute, 59);
// long timeinmillis =(nextday.gettimeinmillis()-system.currenttimemillis());
// this.getredismanager().expire(key, timeinmillis.intvalue()/1000);
this.getredismanager().expireat(key, nextday.gettime().gettime()/1000l);
5.date物件之間的比較
date date = new date( 2016-1900, 8-1, 28 );
date date1 = new date();
system.out.println( date.compareto( date1 ) );//返回int型別。如果等於0,則date=date1;如果小於0,則 date二:calendar類
從jdk1.1版本開始,在處理日期和時間時,系統推薦使用calendar類進行實現(date的一些方法都過時了)。在設計上,calendar類的功能要比date類強大很多,而且在實現方式上也比date類要複雜一些,下面就介紹一下calendar類的使用。
calender類是乙個抽象類,在實際使用時實現特定的子類的物件,建立物件的過程對程式設計師來說是透明的,只需要使用getinstance()方法建立即可。
1.使用calendar類代表當前時間
calendar c = calendar.getinstance();
由於calendar類是抽象類,且calendar類的構造方法是protected的,所以無法使用calendar類的構造方法來建立物件,api中提供了getinstance方法用來建立物件。使用該方法獲得的calendar物件就代表當前的系統時間,由於calendar類tostring實現的沒有date類那麼直觀,所以直接輸出calendar類的物件意義不大。
2.使用calendar類代表指定的時間
calendar c1 = calendar.getinstance();
c1.set(2016,8-1,28);
使用過calendar類代表特定的時間,需要首先建立乙個calendar的物件,然後在設定該物件中的年月日引數來完成。
set方法的宣告為:public final void set(int year,int month,int date)
以上示例**設定的時間為2023年8月28日,其引數的結構和date類不一樣。calendar類中年份的數值直接書寫,月份的值為實際的月份值減1,日期的值就是實際的日期值。
如果只設定某個字段某個字段,例如日期的值,則可以使用如下set方法:
public void set(int field,int value)
在該方法中,引數field代表要設定的字段的型別,常見型別如下:
calendar.year---年份;calendar.month---月份; calendar.date---日期; calendar.day_of_month---日期,和 calendar.date欄位完全相同;
calendar.hour---12小時制的小時數;calendar.hour_of_day---24小時制的小時數;calendar.minute---分鐘;calendar.second---秒;calendar.day_of_week---星期幾。
後續的引數value代表設定成的值。例如:c1.set(calendar.date,10);該**的作用是將c1物件代表的時間中日期設定為10號,其它所有的數值會被重新計算,例如星期幾以及對應的相對時間數值等。
3.獲得calendar類中的資訊
@suppresswarnings("all")
public class testmain ;// 一年當中的每個月的數目
int count = 0;
system.out.println( year + "年" + (month + 1) + "月" + day + "日" );
system.out.println( "sun\t" + "mon\t" + "tue\t" + "wed\t" + "thu\t" + "fri\t" + "sat\t" );
while (week0 != 0)
if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
month[ 1 ] = 29;
for (int i = 0; i < month[ month ]; i++)
轉至:
calendar和date的轉化
(1) calendar轉化為date
calendar cal=calendar.getinstance();
date date=cal.gettime();
(2) date轉化為calendar
date date=new
date();
calendar cal=calendar.getinstance();
cal.settime(date);
JAVA中的Date類與Calendar類
calendar類 1.calendar類不能呼叫建構函式,只能使用單例模式來操作,例如 calendar test calendar.getinstance 並且只能用在static方法下。2.calendar預設是獲取當前系統距離1970年1月一日到現在的時間,可以通過test.gettime ...
JAVA常見類(十一)Date類
public date 根據當前的預設毫秒值建立物件。public date long date 根據給定的毫秒值建立物件。public long gettime 獲取時間,以毫秒為單位。public void settime 設定時間,以毫秒為單位。dateformat 可以進行日期和字串的格式化...
Java實現乙個Date類
日期類 根據需求列出功能列表 1.傳 年 月 日 構造日期類 2.在當前日期上增加多少天 3.在當前日期上減少多少天 4.可以返回字串 string 的方法 2019 5 30 5.加一些限制 年支援的範圍 1900,2100 6.如果給定兩個日期,計算兩個日期之間相差多少天 設計屬性 1.年 月 ...