localdate转date时区问题 |
您所在的位置:网站首页 › localdate和date › localdate转date时区问题 |
写在前面: 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 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |