流殃的博客

| Comments

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());
    }

执行结果:
image-1648564916401

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);

image-1651273696127
都是一些基础的日期使用,获取日期时间,增加日期了 都是比较符合我们日常对于日期的使用的

Comments

评论