LocalDate Instant Long 日期整数相互转换

     /**
     * LocalDateTime, LocalDate, Instant, Long 相互转换
     */
    @Test
    fun transform() {
        val localDateTime = LocalDateTime.now()
        // LocalDateTime to LocalDate
        println(localDateTime.toLocalDate())
        // LocalDateTime to Instant
        println(localDateTime.toInstant(ZoneOffset.UTC))
//        LocalDateTime to Long
        println(localDateTime.toInstant(ZoneOffset.UTC).toEpochMilli())


        val localDate = LocalDate.now()
        // LocalDate to LocalDateTime
        println(localDate.atTime(LocalTime.now()))
//        LocalDate to Instant
        println(localDate.atTime(LocalTime.now()).toInstant(ZoneOffset.UTC))
//        LocalDate to Long
        println(localDate.atTime(LocalTime.now()).toInstant(ZoneOffset.UTC).toEpochMilli())


        val instant = Instant.now()
//        Instant to LocalDateTime
        println(LocalDateTime.ofInstant(instant, ZoneId.systemDefault()))
//        Instant to LocalDate
        println(LocalDate.ofInstant(instant, ZoneId.systemDefault()))
//        Instant to Long
        println(instant.toEpochMilli())


        val milli: Long = Instant.now().toEpochMilli()
//        Long to LocalDateTime
        println(LocalDateTime.ofInstant(Instant.ofEpochMilli(milli), ZoneId.systemDefault()))
//        Long to LocalDate
        println(LocalDate.ofInstant(Instant.ofEpochMilli(milli), ZoneId.systemDefault()))
//        Long to Instant
        println(Instant.ofEpochMilli(milli))
    }

引用链接:LocalDateTime, LocalDate, Instant, Long 相互转换


在我们实际开发过程中,经常会涉及到时间的处理,下面我整理了一些常用的转换,希望能帮助到各位道友
话不多说,上代码!!!

java8全新的日期和时间API

DateTimeFormatterSimpleDateFormat 区别

  • SimpleDateFormat:非线程安全的

  • DateTimeFormatter:线程安全的

//自定义格式化 
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDateTime localDateTime = LocalDateTime.parse("2019-07-31 00:00:00", dtf);
LocalDate localDate = LocalDate.parse("2019-07-31", dtf1);
Date date = Date.from(LocalDateTime.parse("2019-07-31 00:00:00", dtf).atZone(ZoneId.systemDefault()).toInstant());
System.err.println(localDateTime);
System.err.println(localDate);
System.err.println(date);
/*  2019-07-31T00:00
    2019-07-31
    Wed Jul 31 00:00:00 CST 2019
*/

LocalDateTime 转localDate

LocalDate localDate = LocalDateTime.now().toLocalDate();

LocalDateTime 转 Long

long milli = LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();

LocalDateTime 转 Date

Date date = Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant());

LocalDateTime 转 String

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String format = LocalDateTime.now().format(dtf);

LocalDate 转 LocalDateTime

LocalDateTime of = LocalDateTime.of(localDate, LocalTime.parse("00:00:00"));
System.err.println(of);

LocalDate 转 Long

long milli = localDate.atStartOfDay(ZoneId.systemDefault()).toInstant().toEpochMilli();
System.err.println(milli);

LocalDate 转 Date

Date date = Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
System.err.println(date);

LocalDate 转 String

String format = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
System.err.println(format);

Date 转 LocalDateTime

Date date = new Date();
LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
System.err.println(localDateTime);

Date 转 Long

Date date = new Date();
long time = date.getTime();
System.err.println(time);

Date 转 LocalDate

Date date = new Date();
LocalDate localDate = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()).toLocalDate();
//先将date转为了localDateTime,随后toLocalDate

Date 转 String

Date date = new Date();
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.format(date);

String 转 LocalDateTime

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String strTime = "2020-11-04 00:00:00";
LocalDateTime localDateTime = LocalDateTime.parse(strTime, dtf);
System.err.println(localDateTime);

String 转 LocalDate

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String strTime = "2020-11-04 00:00:00";
LocalDate localDate = LocalDateTime.parse(strTime, dtf).toLocalDate();
System.err.println(localDate);

String 转 Date

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String strTime = "2020-11-04 00:00:00";
Date date = Date.from(LocalDateTime.parse(strTime, dtf).atZone(ZoneId.systemDefault()).toInstant());
System.err.println(date);

Long 转 LocalDateTime

long milli = 1604458818000L;
LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(milli), ZoneId.systemDefault());
System.err.println(localDateTime);

Long 转 LocalDate

long milli = 1604458818000L;
LocalDate localDate = LocalDateTime.ofInstant(Instant.ofEpochMilli(milli), ZoneId.systemDefault()).toLocalDate();
System.err.println(localDate);

LocalDateTime获取前、后的日子

LocalDateTime.now().minusDays(2); //两天前的日期
LocalDateTime.now().plusDays(2);  //两天后的日期

Date date = new Date();//获取当前时间    
Calendar calendar = Calendar.getInstance();    
calendar.setTime(date);    
calendar.add(Calendar.YEAR, -1);//当前时间减去一年,即一年前的时间    
calendar.add(Calendar.MONTH, -1);//当前时间前去一个月,即一个月前的时间    
calendar.getTime();//获取一年前的时间,或者一个月前的时间    

原文链接:localDateTime、date、localDate、string、long之间的转换处理

发表评论