乐趣区

Java-8-日期大全笔记

本文是依据网络文章进行的汇总,持续更新帖

为什么要学 Java 8 的日期时间方法呢?SimpleDateFormat 不是很好用吗?我相信这种声音不在少数,原因有:

  • SimpleDateFormat 非线程安全
  • 拥抱新技术,没有什么不好的,这才是 Stay hungry

获取当前时间

Long millisecond = Instant.now().toEpochMilli();  // 精确到毫秒
Long second = Instant.now().getEpochSecond();// 精确到秒 

将 Long 类型的时间戳转成字符串

DateTimeFormatter ftf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); ftf.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(time),ZoneId.systemDefault()));

将字符串时间转成 Long 类型的时间戳

DateTimeFormatter ftf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime parse = LocalDateTime.parse("2018-05-29 13:52:50", ftf);
LocalDateTime.from(parse).atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();

Date 与 LocalDateTime 互转

// 将 java.util.Date 转换为 java8 的 java.time.LocalDateTime, 默认时区为东 8 区
    public static LocalDateTime dateConvertToLocalDateTime(Date date) {return date.toInstant().atOffset(ZoneOffset.of("+8")).toLocalDateTime();}
 
   
    // 将 java8 的 java.time.LocalDateTime 转换为 java.util.Date,默认时区为东 8 区
    public static Date localDateTimeConvertToDate(LocalDateTime localDateTime) {return Date.from(localDateTime.toInstant(ZoneOffset.of("+8")));
    }

日期变换

 /**
     * 取本月第一天
     */
    public static LocalDate firstDayOfThisMonth() {LocalDate today = LocalDate.now();
        return today.with(TemporalAdjusters.firstDayOfMonth());
    }
 
    /**
     * 取本月第 N 天
     */
    public static LocalDate dayOfThisMonth(int n) {LocalDate today = LocalDate.now();
        return today.withDayOfMonth(n);
    }
 
    /**
     * 取本月最后一天
     */
    public static LocalDate lastDayOfThisMonth() {LocalDate today = LocalDate.now();
        return today.with(TemporalAdjusters.lastDayOfMonth());
    }
 
    /**
     * 取本月第一天的开始时间
     */
    public static LocalDateTime startOfThisMonth() {return LocalDateTime.of(firstDayOfThisMonth(), LocalTime.MIN);
    }
 
 
    /**
     * 取本月最后一天的结束时间
     */
    public static LocalDateTime endOfThisMonth() {return LocalDateTime.of(lastDayOfThisMonth(), LocalTime.MAX);

Java 8 时间,字符串和 Long 时间戳互转

Java8 LocalDateTime 获取时间戳(毫秒 / 秒)、LocalDateTime 与 String 互转、Date 与 LocalDateTime 互转

退出移动版