美文网首页
Java8中的LocalDateTime和时间戳timestam

Java8中的LocalDateTime和时间戳timestam

作者: 香山上的麻雀 | 来源:发表于2019-11-14 17:48 被阅读0次

    将timestamp转为LocalDateTime

    public LocalDateTime timestamToDatetime(long timestamp){
            Instant instant = Instant.ofEpochMilli(timestamp);
            return LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
    }
    

    将LocalDataTime转为timestamp

    public long datatimeToTimestamp(LocalDateTime ldt){
            long timestamp = ldt.toInstant(ZoneOffset.of("+8")).toEpochMilli();
            return timestamp;
    }
    

    我在网上还找到了另一个将datetime转为时间戳的方法:

    ZoneId zone = ZoneId.systemDefault();
    long timestamp = ldt.atZone(zone).toInstant().toEpochMilli();
    

    Java8的时间转为时间戳的大概的思路就是LocalDateTime先转为Instant,设置时区,然后转timestamp。

    原文链接:https://blog.csdn.net/czx2018/article/details/85005466

    1.LocalDateTime获取毫秒数

    //获取秒数
    Long second = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8"));
    //获取毫秒数
    Long milliSecond = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();
    

    2.LocalDateTime与String互转

    //时间转字符串格式化
     DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");
     String dateTime = LocalDateTime.now(ZoneOffset.of("+8")).format(formatter);
     
    //字符串转时间
    String dateTimeStr = "2018-07-28 14:11:15";
    DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    LocalDateTime dateTime = LocalDateTime.parse(dateTimeStr, df);
    

    3.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")));
        }
     
     
        /**
         * 测试转换是否正确
         */
        @Test
        public void testDateConvertToLocalDateTime() {
            Date date = DateUtils.parseDate("2018-08-01 21:22:22", DateUtils.DATE_YMDHMS);
            LocalDateTime localDateTime = DateUtils.dateConvertToLocalDateTime(date);
            Long localDateTimeSecond = localDateTime.toEpochSecond(ZoneOffset.of("+8"));
            Long dateSecond = date.toInstant().atOffset(ZoneOffset.of("+8")).toEpochSecond();
            Assert.assertTrue(dateSecond.equals(localDateTimeSecond));
        }
    

    原文链接:https://blog.csdn.net/u014044812/article/details/79231738

    1.LocalDate转Date

    LocalDate nowLocalDate = LocalDate.now();
    Date date = Date.from(localDate.atStartOfDay(ZoneOffset.ofHours(8)).toInstant());
    

    2.LocalDateTime转Date

    LocalDateTime localDateTime = LocalDateTime.now();
    Date date = Date.from(localDateTime.atZone(ZoneOffset.ofHours(8)).toInstant());
    

    3.Date转LocalDateTime(LocalDate)

    Date date = new Date();
    LocalDateTime localDateTime = date.toInstant().atZone(ZoneOffset.ofHours(8)).toLocalDateTime();
    LocalDate localDate = date.toInstant().atZone(ZoneOffset.ofHours(8)).toLocalDate();
    

    4.LocalDate转时间戳

    LocalDate localDate = LocalDate.now();
    long timestamp = localDate.atStartOfDay(ZoneOffset.ofHours(8)).toInstant().toEpochMilli();
    

    5.LocalDateTime转时间戳

    LocalDateTime localDateTime = LocalDateTime.now();
    long timestamp = localDateTime.toInstant(ZoneOffset.ofHours(8)).toEpochMilli();
    

    6.时间戳转LocalDateTime(LocalDate)

    long timestamp = System.currentTimeMillis();
    LocalDate localDate = Instant.ofEpochMilli(timestamp).atZone(ZoneOffset.ofHours(8)).toLocalDate();
    LocalDateTime localDateTime = Instant.ofEpochMilli(timestamp).atZone(ZoneOffset.ofHours(8)).toLocalDateTime();
    

    7.计算两天的时间差


    相关文章

      网友评论

          本文标题:Java8中的LocalDateTime和时间戳timestam

          本文链接:https://www.haomeiwen.com/subject/jmtdictx.html