java時間處理,Date,DateFormat,Calendar

一,Date類:日期類

表示特定的瞬間,精確到毫秒,1秒=1000毫秒

1. 構造:

public Date();

無參構造,構造一個代表當前系統(tǒng)時間的Date對象

public Date(long time);

一指定毫秒創(chuàng)建一個代表當前系統(tǒng)時間的Date對象 毫秒值代表距離
標準時間(1970年01月01日 00:00:00)的毫秒值
把毫秒值轉換為Date對象

2. 成員方法:

toString();

是Date類重寫了Object類的toString 方法

返回值是 (星期幾 月份 月份 時:分:秒 時區(qū) 年)

getTime();

把Date對象轉換為毫秒值

返回值是當前時間距離標準時間有多少毫秒值

二,DateFormat類:日期格式化類

把date對象按指定格式轉換為String
DateFormat是一個抽象類,不能直接使用它
一般使用SimpleDateFormat

1.構造

SimpleDateFormat(String pattern)

得到格式化時間

* y 年; M 年中的月份;
* w 年中的周數(shù);
* W月份中的周數(shù);
* D 年中的天數(shù) ;
* d 月份中的天數(shù) ;
* F 月份中的星期 ;
* E 星期中的天數(shù) ;
* a Am/pm 標記;
* H 一天中的小時數(shù)(0-23);
* k 一天中的小時數(shù)(1-24);
* K am/pm 中的小時數(shù)(0-11)
* h am/pm 中的小時數(shù)(1-12)
* m 小時中的分鐘數(shù)
* s 分鐘中的秒數(shù)
* S 毫秒數(shù)
* z 時區(qū)
* Z 時區(qū)

2.成員方法

format(Date d);格式化時間

傳入Date
返回已經格式化的字符串

parse(str);解析時間

傳入需要解析的字符串
返回Date對象


圖一

demo如圖1所示:輸出 :

2019年01月21日,19時 39分 53秒
Mon Jan 21 19:39:53 CST 2019
Mon Jan 21 19:39:53 CST 2019

三,Calendar類:日歷類

Calendar是一個抽象類,不能直接使用
一般使用Calender的靜態(tài)方法

1.靜態(tài)方法

getInstance()

使用:Calendar.getInstance();

2.成員方法

get(Calendar.YEAR);獲取時間

獲取Calender中的某一個字段/成員變量

static int ALL_STYLES getDisplayNames的樣式說明符, 表示所有樣式的名稱,如“1月”和“1月”。
static int AM AM_PM字段的值表示從午夜到中午之前的一天中的一段時間。
static int AM_PM 對于現(xiàn)場數(shù) get和 set指示是否 HOUR是前或中午之后。
static int APRIL MONTH字段的價值 指示了格里高利和朱利安日歷中的第四個月。
protected boolean areFieldsSet 如果 fields[]與當前設置的時間同步,則為真。
static int AUGUST MONTH領域的價值 指示了公歷和朱利安日歷中的第八個月。
static int DATE get和 set字段編號表示該月的日期。
static int DAY_OF_MONTH get字段編號和 set本月的日期。
static int DAY_OF_WEEK get字段編號和 set表示一周中的日期。
static int DAY_OF_WEEK_IN_MONTH get字段編號和 set當月的 set幾的序號。
static int DAY_OF_YEAR get和 set字段編號, set本年度的日數(shù)。
static int DECEMBER MONTH字段的值表示公歷和朱利安日歷中的第十二個月。
static int DST_OFFSET get和 set字段編號 get夏令時偏移量(以毫秒為單位)。
static int ERA get和 set字段號表示時代,例如在儒略歷中的AD或BC。
static int FEBRUARY MONTH字段的價值表示今年第二個月在公歷和朱利安日歷。
static int FIELD_COUNT get和 set的不同字段的數(shù)量。
protected int[] fields 該日歷的當前設置時間的日歷字段值。
static int FRIDAY DAY_OF_WEEK字段的值表示周五。
static int HOUR get和 set字段編號, get上午或下午的小時。
static int HOUR_OF_DAY get字段編號和 set當天的小時數(shù)。
protected boolean[] isSet 說明是否設置日歷的指定日歷字段的標志。
protected boolean isTimeSet 如果那么那么 time的值是有效的。
static int JANUARY MONTH字段的價值表示今年首次在公歷和朱利安日歷。
static int JULY MONTH字段的值代表了 公歷和朱利安日歷中的第七個月。
static int JUNE MONTH字段的價值 指示了公歷和朱利安日歷中的第六個月。
static int LONG getDisplayNamegetDisplayNames相當于 LONG_FORMAT的樣式說明 。
static int LONG_FORMAT getDisplayNamegetDisplayNames的樣式說明 表示用于格式的長名稱。
static int LONG_STANDALONE 一個 getDisplayNamegetDisplayNames的樣式說明 表示一個獨立使用的長名稱,例如月份名稱作為日歷頭。
static int MARCH MONTH字段的值代表了 公歷和朱利安日歷中的第三個月。
static int MAY MONTH領域的價值 指示了公歷和朱利安日歷中的第五個月。
static int MILLISECOND get和 set字段號表示 get內的 set數(shù)。
static int MINUTE get和 set字段編號表示小時內的分鐘。
static int MONDAY DAY_OF_WEEK字段的值表示星期一。
static int MONTH get和 set字段號表示月份。
static int NARROW_FORMAT getDisplayNamegetDisplayNames的樣式說明 , 表示用于格式的窄名稱。
static int NARROW_STANDALONE getDisplayNamegetDisplayNames的樣式說明 獨立地表示一個狹義的名稱。
static int NOVEMBER MONTH領域的價值 指示了公歷和朱利安日歷中的第十一個月。
static int OCTOBER MONTH字段的價值表示在公歷和朱利安日歷中的一年中的第十個月。
static int PM AM_PM字段的值表示從中午到午夜之前的一天中的一段時間。
static int SATURDAY DAY_OF_WEEK字段的值表示星期六。
static int SECOND get和 set字段編號表示分鐘內的第二個。
static int SEPTEMBER MONTH字段的值代表了 公歷和朱利安日歷中的第九個月。
static int SHORT getDisplayNamegetDisplayNames的樣式說明 , 相當于 SHORT_FORMAT 。
static int SHORT_FORMAT getDisplayNamegetDisplayNames的樣式說明 , 表示用于格式的短名稱。
static int SHORT_STANDALONE 一個用于 getDisplayNamegetDisplayNames的樣式說明 , 表示一個簡單的名稱,例如一個月縮寫作為日歷頭。
static int SUNDAY DAY_OF_WEEK字段的值表示星期天。
static int THURSDAY DAY_OF_WEEK字段的值表示星期四。
protected long time 這個日歷的當前設定時間,以1970年1月1日,格林尼治標準時間0:00:00之后的毫秒表示。
static int TUESDAY DAY_OF_WEEK字段的值表示周二。
static int UNDECIMBER MONTH字段的值表示一年的第十三個月。
static int WEDNESDAY DAY_OF_WEEK字段的值表示周三。
static int WEEK_OF_MONTH get和 set字段編號, set當月的周數(shù)。
static int WEEK_OF_YEAR get和 set字段編號, set本年度的周數(shù)。
static int YEAR get現(xiàn)場編號和 set表示年份。
static int ZONE_OFFSET get和 set字段編號, get GMT以毫秒為 get的原始偏移量。
add(int field, int amount); 調整時間

給定的字段添加指定的值如demo2
注意:添加天數(shù),月份,年等等 該方法會自動計算

圖二

輸出結果:

java.util.GregorianCalendar[time=1548078976051,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=0,WEEK_OF_YEAR=4,WEEK_OF_MONTH=4,DAY_OF_MONTH=21,DAY_OF_YEAR=21,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=9,HOUR_OF_DAY=21,MINUTE=56,SECOND=16,MILLISECOND=51,ZONE_OFFSET=28800000,DST_OFFSET=0]
2019年01月21日
2019年01月23日
set(int field, int value)設置時間
//設置時間 
calendar.set(Calendar.YEAR,1000);
calendar.set(Calendar.DAY_OF_MONTH,10); 
calendar.set(Calendar.MONTH,100);
System.out.println(getDate(calendar));

輸出:1008年5月10日

三,時間類的轉換

Calendar 轉化 String

Calendar calendar= Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String dateStr = sdf.format(calendar.getTime());

String 轉化Calendar

String str="2019-1-21";
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
Date date =sdf.parse(str);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);

Date 轉化String

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
String dateStr=sdf.format(new Date());

String 轉化Date

String str="2019-1-21";
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
Date date= sdf.parse(str);

Date 轉化Calendar

Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());

Calendar轉化Date

Calendar calendar = Calendar.getInstance(); 
Date date =calendar.getTime();
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容