LocalDate大法

本文详细介绍了Java8中LocalDate,LocalDateTime和LocalTime的创建、自定义日期设置、加减操作、日期时间的比较、时间戳转换以及格式化的方法。通过示例代码展示了如何进行日期时间的处理和转换。
摘要由CSDN通过智能技术生成

LocalDate使用

localDate时间创建方式

/**
 * localDate时间创建方式
 * 获取当前时间
 *
 * @author hq
 * Created in 2020/10/16 9:40
 */
@Test
public void localDateCreate() {
    LocalDate yyyyMMdd = LocalDate.now();
    LocalTime HHmmssSSS = LocalTime.now();
    LocalDateTime yyyyMMddHHmmssSSS = LocalDateTime.now();
    System.out.println("年月日: " + yyyyMMdd);
    System.out.println("时分秒毫秒: " + HHmmssSSS);
    System.out.println("年月日时分秒毫秒: " + yyyyMMddHHmmssSSS);
    //输出:
    //        年月日: 2020-10-16
    //        时分秒毫秒: 09:55:49.448
    //        年月日时分秒毫秒: 2020-10-16T09:55:49.448
}

localDate 设值自定义日期 根据指定日期/时间创建对象

/**
 * localDate 设值自定义日期
 * 根据指定日期/时间创建对象
 *
 * @author hq
 * Created in 2020/10/16 9:40
 */
@Test
public void setDate() {
    LocalDate yyyyMMdd = LocalDate.of(2020, 10, 15);
    LocalTime HHmmssSSS = LocalTime.of(10, 10, 10);
    LocalDateTime yyyyMMddHHmmssSSS = LocalDateTime.of(2020, 10, 15, 10, 10);
    System.out.println("自定义的年月日: " + yyyyMMdd);
    System.out.println("自定义时分秒毫秒: " + HHmmssSSS);
    System.out.println("自定义年月日时分秒毫秒: " + yyyyMMddHHmmssSSS);

    //输出:
    //        自定义的年月日: 2020-10-15
    //        自定义时分秒毫秒: 10:10:10
    //        自定义年月日时分秒毫秒: 2020-10-15T10:10
}

日期时间的加减

/**
 * 日期时间的加减
 *
 * @author hq
 * Created in 2020/10/16 9:58
 */
@Test
public void lessOrAddDate() {
    LocalDate yyyyMMdd = LocalDate.now();
    LocalDate addOneDay = yyyyMMdd.plusDays(1L); //添加一日
    LocalDate addOneMonths = yyyyMMdd.plusMonths(1L);//添加一月
    LocalDate addOneYears = yyyyMMdd.plusYears(1L);//添加一年
    LocalDate addOneWeeks = yyyyMMdd.plusWeeks(1L);//添加一周

    LocalDate delOneDay = yyyyMMdd.minusDays(1L); //减去一日
    LocalDate delOneMonths = yyyyMMdd.minusMonths(1L);//减去一月
    LocalDate delOneYears = yyyyMMdd.minusYears(1L);//减去一年
    LocalDate delOneWeeks = yyyyMMdd.minusWeeks(1L);//减去一周
    System.out.println("LocalDate yyyyMMdd 当前时间: " + yyyyMMdd);
    System.out.println("*********LocalDate yyyyMMdd 添加 操作*********");
    System.out.println("LocalDate yyyyMMdd 添加一日: " + addOneDay);
    System.out.println("LocalDate yyyyMMdd 添加一月: " + addOneMonths);
    System.out.println("LocalDate yyyyMMdd 添加一年: " + addOneYears);
    System.out.println("LocalDate yyyyMMdd 添加一周: " + addOneWeeks);
    System.out.println("*********LocalDate yyyyMMdd 减 操作*********");
    System.out.println("LocalDate yyyyMMdd 减去一日: " + delOneDay);
    System.out.println("LocalDate yyyyMMdd 减去一月: " + delOneMonths);
    System.out.println("LocalDate yyyyMMdd 减去一年: " + delOneYears);
    System.out.println("LocalDate yyyyMMdd 减去一周: " + delOneWeeks);
    System.out.println("####################################################################");
    LocalTime HHmmssSSS = LocalTime.now();
    LocalTime addOneHours = HHmmssSSS.plusHours(1L); //添加1小时
    LocalTime addOneMinutes = HHmmssSSS.plusMinutes(1L);//添加1分钟
    LocalTime addOneSeconds = HHmmssSSS.plusSeconds(1L);//添加1秒
    LocalTime addOneNanos = HHmmssSSS.plusNanos(1L);//添加1纳秒

    LocalTime delOneHours = HHmmssSSS.minusHours(1L); //减去1小时
    LocalTime delOneMinutes = HHmmssSSS.minusMinutes(1L);//减去1分钟
    LocalTime delOneSeconds = HHmmssSSS.minusSeconds(1L);//减去1秒
    LocalTime delOneNanos = HHmmssSSS.minusNanos(1L);//减去1纳秒

    System.out.println("LocalTime HHmmssSSS 当前时间: " + HHmmssSSS);
    System.out.println("*********LocalTime HHmmssSSS 添加 操作*********");
    System.out.println("LocalTime HHmmssSSS 添加1小时: " + addOneHours);
    System.out.println("LocalTime HHmmssSSS 添加1分钟: " + addOneMinutes);
    System.out.println("LocalTime HHmmssSSS 添加1秒: " + addOneSeconds);
    System.out.println("LocalTime HHmmssSSS 添加1纳秒: " + addOneNanos);
    System.out.println("*********LocalTime HHmmssSSS 减 操作*********");
    System.out.println("LocalTime HHmmssSSS 减去1小时: " + delOneHours);
    System.out.println("LocalTime HHmmssSSS 减去1分钟: " + delOneMinutes);
    System.out.println("LocalTime HHmmssSSS 减去1秒: " + delOneSeconds);
    System.out.println("LocalTime HHmmssSSS 减去1纳秒: " + delOneNanos);
    System.out.println("####################################################################");
    LocalDateTime yyyyMMddHHmmssSSS = LocalDateTime.now();
    LocalDateTime localDateTimeaddOneDay = yyyyMMddHHmmssSSS.plusDays(1L); //添加一日
    LocalDateTime localDateTimeaddOneMonths = yyyyMMddHHmmssSSS.plusMonths(1L);//添加一月
    LocalDateTime localDateTimeaddOneYears = yyyyMMddHHmmssSSS.plusYears(1L);//添加一年
    LocalDateTime localDateTimeaddOneWeeks = yyyyMMddHHmmssSSS.plusWeeks(1L);//添加一周
    LocalDateTime localDateTimeaddOneHours = yyyyMMddHHmmssSSS.plusHours(1L); //添加1小时
    LocalDateTime localDateTimeaddOneMinutes = yyyyMMddHHmmssSSS.plusMinutes(1L);//添加1分钟
    LocalDateTime localDateTimeaddOneSeconds = yyyyMMddHHmmssSSS.plusSeconds(1L);//添加1秒
    LocalDateTime localDateTimeaddOneNanos = yyyyMMddHHmmssSSS.plusNanos(1L);//添加1纳秒
    System.out.println("LocalDateTime yyyyMMddHHmmssSSS 当前时间: " + yyyyMMddHHmmssSSS);
    System.out.println("*********LocalDateTime yyyyMMddHHmmssSSS 添加 操作*********");
    System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加一日: " + localDateTimeaddOneDay);
    System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加一月: " + localDateTimeaddOneMonths);
    System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加一年: " + localDateTimeaddOneYears);
    System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加一周: " + localDateTimeaddOneWeeks);
    System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加1小时: " + localDateTimeaddOneHours);
    System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加1分钟: " + localDateTimeaddOneMinutes);
    System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加1秒: " + localDateTimeaddOneSeconds);
    System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加1纳秒: " + localDateTimeaddOneNanos);
    LocalDateTime localDateTimedelOneDay = yyyyMMddHHmmssSSS.minusDays(1L); //减去一日
    LocalDateTime localDateTimedelOneMonths = yyyyMMddHHmmssSSS.minusMonths(1L);//减去一月
    LocalDateTime localDateTimedelOneYears = yyyyMMddHHmmssSSS.minusYears(1L);//减去一年
    LocalDateTime localDateTimedelOneWeeks = yyyyMMddHHmmssSSS.minusWeeks(1L);//减去一周
    LocalDateTime localDateTimedelOneHours = yyyyMMddHHmmssSSS.minusHours(1L); //减去1小时
    LocalDateTime localDateTimedelOneMinutes = yyyyMMddHHmmssSSS.minusMinutes(1L);//减去1分钟
    LocalDateTime localDateTimedelOneSeconds = yyyyMMddHHmmssSSS.minusSeconds(1L);//减去1秒
    LocalDateTime localDateTimedelOneNanos = yyyyMMddHHmmssSSS.minusNanos(1L);//减去1纳秒
    System.out.println("*********LocalDateTime yyyyMMddHHmmssSSS 减 操作*********");
    System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去一日: " + localDateTimedelOneDay);
    System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去一月: " + localDateTimedelOneMonths);
    System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去一年: " + localDateTimedelOneYears);
    System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去一周: " + localDateTimedelOneWeeks);
    System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去1小时: " + localDateTimedelOneHours);
    System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去1分钟: " + localDateTimedelOneMinutes);
    System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去1秒: " + localDateTimedelOneSeconds);
    System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去1纳秒: " + localDateTimedelOneNanos);

    /*
    输出:
        LocalDate yyyyMMdd 当前时间: 2020-10-16

        *********LocalDate yyyyMMdd 添加 操作*********
        LocalDate yyyyMMdd 添加一日: 2020-10-17
        LocalDate yyyyMMdd 添加一月: 2020-11-16
        LocalDate yyyyMMdd 添加一年: 2021-10-16
        LocalDate yyyyMMdd 添加一周: 2020-10-23

        *********LocalDate yyyyMMdd 减 操作*********
        LocalDate yyyyMMdd 减去一日: 2020-10-15
        LocalDate yyyyMMdd 减去一月: 2020-09-16
        LocalDate yyyyMMdd 减去一年: 2019-10-16
        LocalDate yyyyMMdd 减去一周: 2020-10-09

        ####################################################################
        LocalTime HHmmssSSS 当前时间: 10:20:22.164

        *********LocalTime HHmmssSSS 添加 操作*********
        LocalTime HHmmssSSS 添加1小时: 11:20:22.164
        LocalTime HHmmssSSS 添加1分钟: 10:21:22.164
        LocalTime HHmmssSSS 添加1秒: 10:20:23.164
        LocalTime HHmmssSSS 添加1纳秒: 10:20:22.164000001

        *********LocalTime HHmmssSSS 减 操作*********
        LocalTime HHmmssSSS 减去1小时: 09:20:22.164
        LocalTime HHmmssSSS 减去1分钟: 10:19:22.164
        LocalTime HHmmssSSS 减去1秒: 10:20:21.164
        LocalTime HHmmssSSS 减去1纳秒: 10:20:22.163999999

        ####################################################################
        LocalDateTime yyyyMMddHHmmssSSS 当前时间: 2020-10-16T10:20:22.165

        *********LocalDateTime yyyyMMddHHmmssSSS 添加 操作*********
        LocalDateTime yyyyMMddHHmmssSSS 添加一日: 2020-10-17T10:20:22.165
        LocalDateTime yyyyMMddHHmmssSSS 添加一月: 2020-11-16T10:20:22.165
        LocalDateTime yyyyMMddHHmmssSSS 添加一年: 2021-10-16T10:20:22.165
        LocalDateTime yyyyMMddHHmmssSSS 添加一周: 2020-10-23T10:20:22.165
        LocalDateTime yyyyMMddHHmmssSSS 添加1小时: 2020-10-16T11:20:22.165
        LocalDateTime yyyyMMddHHmmssSSS 添加1分钟: 2020-10-16T10:21:22.165
        LocalDateTime yyyyMMddHHmmssSSS 添加1秒: 2020-10-16T10:20:23.165
        LocalDateTime yyyyMMddHHmmssSSS 添加1纳秒: 2020-10-16T10:20:22.165000001

        *********LocalDateTime yyyyMMddHHmmssSSS 减 操作*********
        LocalDateTime yyyyMMddHHmmssSSS 减去一日: 2020-10-15T10:20:22.165
        LocalDateTime yyyyMMddHHmmssSSS 减去一月: 2020-09-16T10:20:22.165
        LocalDateTime yyyyMMddHHmmssSSS 减去一年: 2019-10-16T10:20:22.165
        LocalDateTime yyyyMMddHHmmssSSS 减去一周: 2020-10-09T10:20:22.165
        LocalDateTime yyyyMMddHHmmssSSS 减去1小时: 2020-10-16T09:20:22.165
        LocalDateTime yyyyMMddHHmmssSSS 减去1分钟: 2020-10-16T10:19:22.165
        LocalDateTime yyyyMMddHHmmssSSS 减去1秒: 2020-10-16T10:20:21.165
        LocalDateTime yyyyMMddHHmmssSSS 减去1纳秒: 2020-10-16T10:20:22.164999999
     */
}

将年、月、日等修改为指定的值,并返回新的日期(时间)对象

/**
 * 将年、月、日等修改为指定的值,并返回新的日期(时间)对象
 * 析: 其效果与时间日期相加减差不多,如今天是2018-01-13,要想变为2018-01-20有两种方式
 * a. localDate.plusDays(20L) -> 相加指定的天数
 * b. localDate.withDayOfYear(20) -> 直接指定到哪一天
 * 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 *
 * @author hq
 * Created in 2020/10/16 10:34
 */
@Test
public void directDesignationTime() {
    LocalDate yyyyMMdd = LocalDate.now();
    System.out.println("LocalDate yyyyMMdd 当前时间: " + yyyyMMdd);

    LocalDate addDay = yyyyMMdd.plusDays(4);
    System.out.println("LocalDate yyyyMMdd 添加4天后的日期: " + addDay);

    LocalDate directDesignationDate = yyyyMMdd.withDayOfMonth(20);
    System.out.println("LocalDate yyyyMMdd 直接指定到当月第几号: " + directDesignationDate);

    LocalDate directDesignationYearDate = yyyyMMdd.withDayOfYear(20);
    System.out.println("LocalDate yyyyMMdd 直接指定到当年第几天: " + directDesignationYearDate);

    LocalDate directDesignationYear = yyyyMMdd.withYear(2000);
    System.out.println("LocalDate yyyyMMdd 当前时间直接指定年份: " + directDesignationYear);

    LocalDate directDesignationMonth = yyyyMMdd.withMonth(6);
    System.out.println("LocalDate yyyyMMdd 当前时间直接指定月份: " + directDesignationMonth);
}

获取日期的年月日周时分秒

/**
 * 获取日期的年月日周时分秒
 *
 * @author hq
 * Created in 2020/10/16 10:48
 */
@Test
public void getDateInfo() {
    LocalDateTime yyyyMMddHHmmssSSS = LocalDateTime.now();
    //本年当中第多少天
    int dayOfYear = yyyyMMddHHmmssSSS.getDayOfYear();
    //本月当中第多少天
    int dayOfMonth = yyyyMMddHHmmssSSS.getDayOfMonth();
    DayOfWeek dayOfWeek = yyyyMMddHHmmssSSS.getDayOfWeek();
    //本周中星期几
    int value = dayOfWeek.getValue();
    System.out.println("今天是" + yyyyMMddHHmmssSSS + "\n"
            + "本年当中第" + dayOfYear + "天" + "\n"
            + "本月当中第" + dayOfMonth + "天" + "\n"
            + "本周中星期" + value + "-即" + dayOfWeek + "\n");

    //年
    int year = yyyyMMddHHmmssSSS.getYear();
    //月
    Month month = yyyyMMddHHmmssSSS.getMonth();
    //直接获取
    int monthValue = yyyyMMddHHmmssSSS.getMonthValue();
    //日
    int dayOfMonth1 = yyyyMMddHHmmssSSS.getDayOfMonth();
    //时
    int hour = yyyyMMddHHmmssSSS.getHour();
    //分
    int minute = yyyyMMddHHmmssSSS.getMinute();
    //秒
    int second = yyyyMMddHHmmssSSS.getSecond();
    //纳秒
    int nano = yyyyMMddHHmmssSSS.getNano();

    System.out.println("今天是" + yyyyMMddHHmmssSSS + "\n"
            + "年 : " + year + "\n"
            + "月 : " + monthValue + "-即 " + month + "\n"
            + "日 : " + dayOfMonth1 + "\n"
            + "时 : " + hour + "\n"
            + "分 : " + minute + "\n"
            + "秒 : " + second + "\n"
            + "纳秒 : " + nano + "\n"
    );
}

时间日期前后的比较与判断

/**
 * 时间日期前后的比较与判断
 *
 * @author hq
 * Created in 2020/10/16 11:08
 */
@Test
public void isBefore() {
    LocalDate now = LocalDate.now();
    LocalDate of = LocalDate.of(2020, 10, 15);
    //判断of 是否在 now 时间之前
    boolean before = of.isBefore(now);
    System.out.println("判断of 是否在 now 时间之前 " + before);
    //判断of 是否在 now 时间之后
    boolean after = of.isAfter(now);
    System.out.println("判断of 是否在 now 时间之后 " + after);
    //判断两个时间是否相等
    boolean equal = of.isEqual(now);
    System.out.println("判断两个时间是否相等 " + equal);
    //判断是否为闰年
    boolean leapYear = now.isLeapYear();
    System.out.println("判断是否为闰年 " + leapYear);

    /*
        判断of 是否在 now 时间之前true
        判断of 是否在 now 时间之后false
        判断两个时间是否相等false
        判断是否为闰年true
     */
}

java8时钟 : clock()

/**
 * java8时钟 : clock()
 *
 * @author hq
 * Created in 2020/10/16 11:16
 */
@Test
public void clock() {
    //返回当前时间,根据系统时间和UTC
    Clock clock = Clock.systemUTC();
    System.out.println(clock);
    // 运行结果: SystemClock[Z]
}

时间戳

/**
 * 时间戳
 * 事实上Instant就是java8以前的Date,
 * 可以使用以下两个类中的方法在这两个类型之间进行转换,
 * 比如Date.from(Instant)就是用来把Instant转换成java.util.date的,
 * 而new Date().toInstant()就是将Date转换成Instant的
 *
 * @author hq
 * Created in 2020/10/16 11:17
 */
@Test
public void instant() {
    Instant instant = Instant.now();
    System.out.println(instant);

    Date date = Date.from(instant);

    Instant instant2 = date.toInstant();
    System.out.println(date);
    System.out.println(instant2);
}

计算时间、日期间隔

/**
 * 计算时间、日期间隔
 * Duration:用于计算两个“时间”间隔
 * Period:用于计算两个“日期”间隔
 *
 * @author hq
 * Created in 2020/10/16 14:28
 */
@Test
public void durationOrPeriod() {
    LocalDateTime now = LocalDateTime.now();
    System.out.println("duration当前时间:" + now);
    LocalDateTime of = LocalDateTime.of(2020, 10, 15, 10, 24);
    System.out.println("duration自定义时间:" + of);
    //Duration:用于计算两个“时间”间隔
    Duration duration = Duration.between(now, of);
    System.out.println(now + " 与 " + of + " 间隔  " + "\n"
            + " 天 :" + duration.toDays() + "\n"
            + " 时 :" + duration.toHours() + "\n"
            + " 分 :" + duration.toMinutes() + "\n"
            + " 毫秒 :" + duration.toMillis() + "\n"
            + " 纳秒 :" + duration.toNanos() + "\n"
    );

    LocalDate nowDate = LocalDate.now();
    System.out.println("period当前时间:" + now);
    LocalDate OfDate = LocalDate.of(2020, 10, 15);
    System.out.println("period自定义时间:" + of);
    //Period:用于计算两个“日期”间隔
    Period period = Period.between(nowDate, OfDate);
    System.out.println("Period相差年数 : " + period.getYears());
    System.out.println("Period相差月数 : " + period.getMonths());
    System.out.println("Period相差日数 : " + period.getDays());
    //还可以这样获取相差的年月日
    System.out.println("-------------------------------");
    long years = period.get(ChronoUnit.YEARS);
    long months = period.get(ChronoUnit.MONTHS);
    long days = period.get(ChronoUnit.DAYS);
    System.out.println("Period相差的年月日分别为 : " + years + "," + months + "," + days);
    //注意,当获取两个日期的间隔时,并不是单纯的年月日对应的数字相加减,而是会先算出具体差多少天,在折算成相差几年几月几日的

    /*
    输出:
        duration当前时间:2020-10-16T14:41:40.235
        duration自定义时间:2020-10-15T10:24
        2020-10-16T14:41:40.235 与 2020-10-15T10:24 间隔
         天 :-1
         时 :-28
         分 :-1697
         毫秒 :-101860235
         纳秒 :-101860235000000

        period当前时间:2020-10-16T14:41:40.235
        period自定义时间:2020-10-15T10:24
        Period相差年数 : 0
        Period相差月数 : 0
        Period相差日数 : -1
        -------------------------------
        Period相差的年月日分别为 : 0,0,-1
     */
}

日期格式化

将时间对象转化为日期字符串

/**
 * 将时间对象转化为日期字符串
 * 时间日期的格式化(格式化后返回的类型是String) 自定格式 使用 DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS");
 * 注:自定义转化的格式一定要与日期类型对应
 * LocalDate只能设置仅含年月日的格式
 * LocalTime只能设置仅含时分秒的格式
 * LocalDateTime可以设置含年月日时分秒的格式
 *
 * @author hq
 * Created in 2020/10/16 14:42
 */
@Test
public void formatter1() {
    LocalDateTime now = LocalDateTime.now();
    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS");
    String format = dtf.format(now);
    System.out.println(format);
    //输出: 2020-10-16 14:41:01:086
}

将时间字符串形式转化为日期对象

/**
 * 将时间字符串形式转化为日期对象
 * <p>
 * 注:格式的写法必须与字符串的形式一样
 * 2018-01-13 21:27:30 对应 yyyy-MM-dd HH:mm:ss
 * 20180113213328 对应 yyyyMMddHHmmss
 * 否则会报运行时异常!
 * <p>
 * 但要记住:得到的最终结果都是类似2018-01-13T21:27:30的格式
 * 因为在输出LocalDateTime对象时,会调用其重写的toString方法。
 *
 * @author hq
 * email ex-huangqing007@jk.com
 * Created in 2020/10/16 14:44
 */
@Test
public void formatter2() {
    String dateStr = "2020-11-12";
    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    LocalDate formatterDate = LocalDate.parse(dateStr, dtf);
    System.out.println(formatterDate);
    //输出 2020-11-12
}

将时间日期对象转为格式化后的时间日期对象

/**
 * 将时间日期对象转为格式化后的时间日期对象
 *
 * @author hq
 * Created in 2020/10/16 14:49
 */
@Test
public void formatter3() {
    //新的格式化API中,格式化后的结果都默认是String,有时我们也需要返回经过格式化的同类型对象
    LocalDateTime ldt1 = LocalDateTime.now();
    DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    String temp = dtf1.format(ldt1);
    LocalDateTime formatedDateTime = LocalDateTime.parse(temp, dtf1);
    System.out.println(formatedDateTime);
}

转换

localDate 转 date

/**
 * localDate 转 date
 * localDateTime 转 date
 *
 * @author hq
 * email ex-huangqing007@jk.com
 * Created in 2020/10/16 15:05
 */
@Test
public void localDateToDate() {
    LocalDate now = LocalDate.now();
    Date from = Date.from(now.atStartOfDay(ZoneOffset.systemDefault()).toInstant());
    LocalDateTime localDateTime = LocalDateTime.now();
    Date date = Date.from(localDateTime.atZone(ZoneOffset.ofHours(8)).toInstant());
    System.out.println(from);
    System.out.println(date);
}

date 转 localDate

/**
 * date 转 localDate
 * date 转 localDateTime
 *
 * @author hq
 * Created in 2020/10/16 15:05
 */
@Test
public void dateToLocalDate() {
    Date date = new Date();
    LocalDate localDate = date.toInstant().atZone(ZoneOffset.systemDefault()).toLocalDate();
    System.out.println(localDate);
    LocalDateTime localDateTime = date.toInstant().atZone(ZoneOffset.systemDefault()).toLocalDateTime();
    System.out.println(localDateTime);
}

localDate 转 时间戳

/**
 * LocalDate 转 时间戳
 * LocalDateTime 转 时间戳
 * Created in 2020/10/16 15:28
 */
@Test
public void localDateToInstant() {
    LocalDate localDate = LocalDate.now();
    long instant = localDate.atStartOfDay(ZoneOffset.systemDefault()).toInstant().toEpochMilli();
    System.out.println(instant);
    LocalDateTime now = LocalDateTime.now();
    long instant1 = now.toInstant(ZoneOffset.ofHours(8)).toEpochMilli();
    System.out.println(instant1);
}

时间戳 转 localDate

/**
 * 时间戳 转 LocalDate
 * 时间戳 转 LocalDateTime
 * Created in 2020/10/16 15:28
 */
@Test
public void instantToLocalDate() {
    long time = new Date().getTime();
    LocalDateTime localDateTime = Instant.ofEpochMilli(time).atZone(ZoneOffset.systemDefault()).toLocalDateTime();
    System.out.println(localDateTime);
    LocalDate localDate = Instant.ofEpochMilli(time).atZone(ZoneOffset.systemDefault()).toLocalDate();
    System.out.println(localDate);

}

转载
https://www.jianshu.com/p/5e9e2bb55211

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值