1. 程式人生 > 其它 >SimpleDateFormat、Date、Calendar的正確使用方式

SimpleDateFormat、Date、Calendar的正確使用方式

一、獲取系統當前時間

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