一、获取系统当前时间
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