写在前面:
Date里面针对java8新增了两个方法:public static
Date from(Instant instant)和public Instant
toInstant(),则表示Date与java8中的LocalXXX互动都需要通过这两个方法来联通。
其流程可以表示为:(网络传输禁止)~
Date
Instance + ZoneId
LocalDateTime
LocalDate LocalTime
------------------------------------------------------------时间转时间
//Date -> Local XX
Date date = new
Date();
Instant instant =
date.toInstant(); 中介
ZoneId zoneId =
ZoneId.systemDefault(); 辅助
LocalDateTime
localDateTime = LocalDateTime.ofInstant(instant,zoneId);
基本
LocalDate和LocalTime都需要从LocalDateTime对象中获取。
LocalDate localDate =
localDateTime.toLocalDate();
LocalTime localTime =
localDateTime.toLocalTime();
//Local XX -> Date
时间日期转Date,也需要转换成基本,再通过中介辅助才能转成功。
localDateTime =
LocalDateTime.of(localDate,LocalTime.MAX);
instant =
localDateTime.atZone(zoneId).toInstant();
Date date2 =
Date.from(instant);
localDateTime =
LocalDateTime.of(LocalDate.now(), localTime);
-------------------------------------------------------String vs
时间
//str -> Local
XX,string与LocalXX之间就比较简单,也是通过DateTimeFormatter的format、parse进行.SimpleDateFormatter调自己的format、parse方法,而这里是调LocalXX自己的方法,formatter作为参数。
String timestr =
"2015-05-05 15:05:22";
DateTimeFormatter
fromFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd
HH:mm:ss");
localDateTime =
LocalDateTime.parse(timestr, fromFormatter);//这里注意,如果formatter格式不对String,转换会报错。
//Local XX -> str
DateTimeFormatter
toFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH");
String r =
localDateTime.format(toFormatter);
DateTimeFormatter
里面有基本格式可以直接拿过来用,变态格式则需要自己再新建。
------------------------------------------------参考资料
LocalXXX还有很多细节操作,包括
传入字段构成日期时间
日期加减
时间操作
周期、间隔等等
操作时间日期需用到
LocalXXX与Mybatis对应尚不清楚!考虑到数据库中都是存放Date类型的,争取操作都用LocalXXX存储转化为Date。
JDBC-----------LocalXXX对应关系
date------------LocalDate
time------------LocalTime
timestamp----LocalDateTime