可以贴代码到本地查看结果:
package tests;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.Locale;
public class testTimeConverter {
public static void local2Date(){
LocalDateTime local = LocalDateTime.now();
/**
* 1、使用Instant转换的方式,LocalDateTime -> Date
*/
Instant instant = local.toInstant(ZoneOffset.of("+8"));
Date date = Date.from(instant);
System.out.println(date);
//Wed Aug 04 17:37:39 CST 2021
/**
* Date -> LocalDateTime
*/
Instant instant1 = date.toInstant();
System.out.println(LocalDateTime.ofInstant(instant1, ZoneId.systemDefault()));
//2021-08-04T18:00:03.304
/**
* 2、使用epochSecond的方式,LocalDateTime -> Date
*/
long epochSecond = local.toEpochSecond(ZoneOffset.of("+8"));
Date date2 = new Date();
//这里setTime用的是ms,所以需要 *1000
date2.setTime(epochSecond * 1000);
System.out.println(date2);
//Wed Aug 04 17:44:40 CST 2021
/**
* Date -> LocalDateTime
*/
System.out.println(LocalDateTime.ofEpochSecond(date2.getTime() / 1000,0,ZoneOffset.UTC));
//2021-08-04T10:07:45
}
public static void local2Offset(){
OffsetDateTime offset = OffsetDateTime.now();
LocalDateTime time = offset.toLocalDateTime();
/**
* LocalDateTime -> OffsetDateTime
*/
System.out.println(time);
//2021-08-04T17:53:21.617
/**
* OffsetDateTime -> LocalDateTime
*/
System.out.println(time.atOffset(ZoneOffset.UTC));
//2021-08-04T17:53:21.617Z
}
public static void formatTiming(){
LocalDateTime now = LocalDateTime.now();
/**
* ISO格式,时/分/秒.毫秒
*/
DateTimeFormatter formatter = DateTimeFormatter.ISO_TIME;
String s = now.format(formatter);
System.out.println(s);
//18:11:06.941
/**
* yyyy-MM-dd形式输出日期
*/
formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.CHINA);
System.out.println(now.format(formatter));
//2021-08-04
}
public static void main(String[] args) {
local2Date();
local2Offset();
formatTiming();
}
}