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

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

上一篇:条件查询


下一篇:vue-baidu-map 地图版本升级v3.0方法