Date
- 获取当日期
Date date = new Date();
这个我遇到一个很坑的事情,就是比较日期的时候,我直接用==来判断两个date了,却忽略了date这个时间是精确到秒的啊,哎!
日期比较
等于(天)
import org.apache.commons.lang.time.DateUtils;
//使用这个比较的就是天了,不用担心精确到秒了,这个的底层实现还是使用的calendar
DateUtils.isSameDay();
public static boolean isSameDay(Date date1, Date date2) {
if (date1 == null || date2 == null) {
throw new IllegalArgumentException("The date must not be null");
}
Calendar cal1 = Calendar.getInstance();
cal1.setTime(date1);
Calendar cal2 = Calendar.getInstance();
cal2.setTime(date2);
return isSameDay(cal1, cal2);
}
大于小于
- date类型可以用before和after,只不过要注意的是这个时间比较是精确到秒的,而且只是大于小于,并不包括等于,返回的结果是布尔类型的
- 如果希望返回值是数字,可以用compareTo方法
public int compareTo(Date anotherDate) { long thisTime = getMillisOf(this); long anotherTime = getMillisOf(anotherDate); return (thisTime<anotherTime ? -1 : (thisTime==anotherTime ? 0 : 1)); }
Calendar
Calendar instance = Calendar.getInstance();
//calendar转为date类型
Date time = calendar.getTime();
//date转为calendar
instance.setTime(date);
获取年月日
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH)+1;
int day= calendar.get(Calendar.DAY_OF_MONTH);
注意: 月份需要+1,因为月份是从0开始的
月最后一天和第一天
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
System.out.println(format.format(calendar.getTime()));
calendar.set(Calendar.DAY_OF_MONTH,calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
System.out.println(format.format(calendar.getTime()));
calendar.set(Calendar.DAY_OF_MONTH,calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
System.out.println(format.format(calendar.getTime()));
其实重点就是getActualMinimum和getActualMaximum方法,获取月第一天和月最后一天
注意
如果在同一类中想要使用多个Calendar,那么就每次都要去getInstance,原因在于,如果你是直接赋值的话,其实还是同一个对象。
public static void main(String[] args) {
Calendar instance = Calendar.getInstance();
System.out.println(instance.getTime());
Calendar s=instance;
System.out.println(s.equals(instance));
s.add(Calendar.DATE,5);
System.out.println(s.getTime());
instance.add(Calendar.DATE,5);
System.out.println(instance.getTime());
}
执行结果:
LocalDate
LocalDate now = LocalDate.now();
int year = now.getYear();
int dayOfYear = now.getDayOfYear();
int dayOfMonth = now.getDayOfMonth();
DayOfWeek dayOfWeek = now.getDayOfWeek();
System.out.println(now);
System.out.println(year);
System.out.println(dayOfYear);
System.out.println(dayOfMonth);
System.out.println(dayOfWeek);
LocalDate plusDays = now.plusDays(5);
LocalDate plusYears = now.plusYears(1);
LocalDate plusMonths = now.plusMonths(1);
LocalDate plusWeeks = now.plusWeeks(1);
System.out.println(plusDays);
System.out.println(plusYears);
System.out.println(plusMonths);
System.out.println(plusWeeks);
都是一些基础的日期使用,获取日期时间,增加日期了 都是比较符合我们日常对于日期的使用的