SimpleDateFormat、Date、Calendar的正確使用方式
阿新 • • 發佈:2021-06-18
一、獲取系統當前時間
1、System.currentTimeMillis();
// 獲取當前系統的毫秒值
Long nowTime = System.currentTimeMillis();
// 毫秒值轉換為date
Date date = new Date(nowTime);
2、new Date();
Date date = new Date();
3、Calendar.getInstance();
// 獲取Calendar例項 Calendar calendar = Calendar.getInstance(); // 獲取當前時間 Date date = calendar.getTime();
二、判斷當前時間是否在某一時間段範圍
/** 1、通過毫秒值 注意:年份是1970年,並不是當前年份 */ public Boolean getTime() { // SimpleDateFormat指定日期格式 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm"); // 時間 Date beginTime = null; Date endTime = null; Date nowTime = null; try { // 開始時間 beginTime = simpleDateFormat.parse("8:30"); // 結束時間 endTime = simpleDateFormat.parse("17:00"); // 當前時間 nowTime = simpleDateFormat.parse(simpleDateFormat.format(new Date())); } catch (ParseException e) { e.printStackTrace(); } // 判斷時間不為null if (beginTime != null && endTime != null && nowTime != null) { return nowTime.getTime() >= beginTime.getTime() && nowTime.getTime() <= endTime.getTime(); } return false; } /** 2、通過Calendar 注意:年份是1970年,並不是當前年份 */ public Boolean getTime() { // SimpleDateFormat指定日期格式 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm"); // 時間 Date beginTime = null; Date endTime = null; Date nowTime = null; try { // 開始時間 beginTime = simpleDateFormat.parse("8:30"); // 結束時間 endTime = simpleDateFormat.parse("17:00"); // 當前時間 nowTime = simpleDateFormat.parse(simpleDateFormat.format(new Date())); } catch (ParseException e) { e.printStackTrace(); } return checkTime(beginTime,endTime,nowTime); } public Boolean checkTime(Date beginTime, Date endTime, Date nowTime) { //設定當前時間 Calendar date = Calendar.getInstance(); date.setTime(nowTime); //設定開始時間 Calendar begin = Calendar.getInstance(); begin.setTime(beginTime); //設定結束時間 Calendar end = Calendar.getInstance(); end.setTime(endTime); //處於開始時間之後,和結束時間之前的判斷(不包含開始和結束時間) return date.after(begin) && date.before(end); }
三、Date
// 構造器
Date date = Date();
Date date = Date(long time); // time為毫秒值
// 方法
// 獲取自1979年1月1日的毫秒值
public long getTime();
// 比較日期,date1.compareTo(Date date2);
// -1表示date1<date2,0表示date1=date2,1表示date1>date2
public int compareTo(Date date);
四、Calendar
Calendar 類是一個抽象類,它為特定瞬間與一組諸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日曆欄位之間的轉換提供了一些方法,併為操作日曆欄位(例如獲得下星期的日期)提供了一些方法。瞬間可用毫秒值來表示,它是距曆元(即格林威治標準時間 1970 年 1 月 1 日的 00:00:00.000,格里高利曆)的偏移量
// 獲取Calendar例項
Calendar calendar = Calendar.getInstance(); // 使用預設時區和語言環境獲得一個日曆
Calendar calendar = Calendar.getInstance(Locale locale); // 使用預設時區和指定語言環境獲得一個日曆
/*
java.util.GregorianCalendar[time=4800000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=29,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=1970,MONTH=0,WEEK_OF_YEAR=1,WEEK_OF_MONTH=1,DAY_OF_MONTH=1,DAY_OF_YEAR=1,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=9,HOUR_OF_DAY=9,MINUTE=20,SECOND=0,MILLISECOND=0,ZONE_OFFSET=28800000,DST_OFFSET=0]
*/
// 方法
// 返回給定日曆欄位的值
public int get(int field)
// 判斷此 Calendar 表示的時間是否在指定 Object 表示的時間之後,返回判斷結果
public boolean after(Object when) // 當且僅當 when 是一個 Calendar 例項時才返回 true。否則該方法返回 false
// 判斷此 Calendar 表示的時間是否在指定 Object 表示的時間之前,返回判斷結果
public boolean before(Object when) // 當且僅當 when 是一個 Calendar 例項時才返回 true。否則該方法返回 false
// 返回此 Calendar 的時間值,以毫秒為單位
public long getTimeInMillis()
// 使用給定的 Date 設定此 Calendar 的時間
public final void setTime(Date date)
// 返回一個表示此 Calendar 時間值(從 曆元至現在的毫秒偏移量)的 Date 物件
public final Date getTime()
五、SimpleDateFormat
日期格式轉換為指定的格式
// SimpleDateFormat例項
SimpleDateFormat sdf = new SimpleDateFormat();
SimpleDateFormat sdf = new SimpleDateFormat(String format); // "yyyy-MM-dd HH:mm:ss"
// 方法
// 將字串轉換為日期格式
public Date parse(String source)
// 將日期格式化為字串指定格式
public final String format(Date date)
更多方法和使用,查閱API:https://tool.oschina.net/apidocs/apidoc?api=jdk-zh