Java时间格式化,别再踩坑!老API不安全,新API真香 在java里, 处理日期跟时间的关键之处在于熟练去掌握老的api, 也就是那个java.util.date, 以及新的api, 就是java.time包下面的各类, 诸如表示日期时刻的类, 表示日期时段的类, 以及表示带时区日期时刻 的类等, date能够用来展现特定的时间点, 能够用于对日期字段展开操作, 能够用于格式化这个日期的字符串, 然而它具备线程不安全的特性 , 表示日期的类会包含年月日等信息能够用于格式化以及解析日期时间, 能够表示带时区的日期时间, 这些都是线程安全的格式化工具, 日期格式化是通过模式字母, 像是y表示年, m表示月, d表示日, h表示时, m表示分, s表示秒等来定义格式的, 处理时区在老的api里使用对应的某一种方式, 在新的api里使用另外一种方式, 要是使用jdk 8以及更高的版本, 那么建议优先选用新的api, 是因为它的设计更加合理, 而且具备线程安全的特性。Java里头处理日期, 讲真的, 其实就是对java.util.Date和java.time这两个包里的类进行灵活运用。前者属于老相识, 后者是JDK 8之后出现的新事物, 二者各有各的优势, 同时也都存在着各自的问题。时间格式化呢, 就是将日期对象转变为你期望呈现的字符串样子, 或者是进行相反的操作。解决方案Java日期处理, 关键之处在于领会Date, 在于领会老API, 在于领会新API, 在于领会java.time包下的类, 在于领会时间格式化, 在于领会老API, 在于领会新API。旧日的API, 涉及java.util.Date, 还有java.util., 以及空括号所涵盖范畴。首个新API, 是java.time. , 第二个新API, 是java.time. , 第三个新API, 是java.time. , 标点处要注意添加逗号。Java 8所引入的java.time包, 将老API存在的诸多问题给解决了, 像这多方面的问题, 其中就包含线程安全方面可是存在着相关问题的, 而且设计方面也有着不合理之处等。Java日期格式化中常见的模式字母有哪些以及都运用模式字母去标明日期以及时间的格式, 某些常见的模式字母涵盖:又如, “yyyy-MM-dd HH:mm:ss”这般的格式, 呈现的是年-月-日 时:分:秒的情况 , 而“MM/dd/yyyy”这种格式 , 展现的是月/日/年的状况。如何处理时区问题日期处理里, 时区处理属于比较复杂的构成部分, java.util.被用来用以表示时区, 而至于java.time., 它是新API当中用来表示时区的类。老APITimeZone timeZone TimeZone.getTimeZone(America/Los_Angeles); Calendar calendar Calendar.getInstance(timeZone); SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd HH:mm:ss z); sdf.setTimeZone(timeZone); System.out.println(sdf.format(calendar.getTime()));新APIZoneId zoneId ZoneId.of(America/Los_Angeles); ZonedDateTime zonedDateTime ZonedDateTime.now(zoneId); DateTimeFormatter dtf DateTimeFormatter.ofPattern(yyyy-MM-dd HH:mm:ss z); System.out.println(zonedDateTime.format(dtf));选择哪个API老API还是新API倘若你的项目依旧运用JDK 7或者更早的版本, 那就仅能运用老API。然而要是你的项目采用了JDK 8或更高级的版本, 强烈提议运用新API。新API在设计层面更为合理, 具备线程安全特性, 而且提供了更多的功能。当然, 迁移至新API需有一定的成本, 得对项目情况加以评估。