前段时间学校教Java常用类库,学到日期的时候,我差点吐了一口老血。。。 当时我在做一个类似于输出日期的作业,这真是令人有点窒息了。无奈我只能SimpleDateFormat一下。 更令人我无法忍受的是,当我尝试着使用Date类自定义一个日期的时候: 这属实太麻烦了,不过一想到学校用的还是jdk6,我就能理解学校为什么教这个类了。 那么现在最流行的jdk8有没有更好的解决方法呢?这不是必须的嘛,作为一个文化人,我今天给大家介绍在学校遇不到的LocalDate和LocalDateTime类 你以为这就完了? 我们可以在源代码中看到,对于LocalDate和LocalDateTime都有同一句描述: 那么对于格式化类DateTimeFormatter呢? 一言以蔽之,在LocalDate和LocalDateTime两个类里头,你可以放飞自我,完全不用担心线程不安全! 看到这里你还会执意的使用Date嘛?
先来看看我遭遇了什么吧:import java.util.Date; public class DateDome { public static void main(String[] args) { Date date = new Date(); System.out.println("当前时间:" + date); System.out.println("当前年份:" + date.getYear()); System.out.println("当前月份:" + date.getMonth()); /* 当前时间:Thu Apr 23 18:08:46 CST 2020 当前年份:120 当前月份:3 当前日期:23 本人写这篇博客的时间是:2020年4月23日 */ } }
为了究其原因,我就去查了一下api,简单看一下这个类中的方法,我发现令人震惊的一幕:
这总共才几个方法啊,就已经被弃用6个了。。。更过分的是:
连构造方法都被弃用一个了,合着我跟着学校学了一个被弃用的类?import java.util.Date; public class DateDome { public static void main(String[] args) { Date date = new Date(2020,1,12); System.out.println("当前时间:" + date); /* 当前时间:Thu Feb 12 00:00:00 CST 3920 */ } }
这是不是意味着如果我要自定义时间还需要提前计算一下?
import java.time.LocalDate; public class DateDome { public static void main(String[] args) { LocalDate date = LocalDate.now(); System.out.println("当前时间:" + date); System.out.println("当前年份:" + date.getYear()); System.out.println("当前月份:" + date.getMonth()); System.out.println("当前日:" + date.getDayOfMonth()); /* 当前时间:2020-04-23 当前年份:2020 当前月份:APRIL 当前日:23 */ } }
但是似乎也有一个不太好的地方,就是不能获取时、分、秒,这就有点糟心了。。。
莫着急,让我们来瞅瞅LocalDateTime类:import java.time.LocalDateTime; public class DateDome { public static void main(String[] args) { LocalDateTime date = LocalDateTime.now(); System.out.println("当前时间:" + date); System.out.println("当前年份:" + date.getYear()); System.out.println("当前月份:" + date.getMonth()); System.out.println("当前日:" + date.getDayOfMonth()); System.out.println("当前时:" + date.getHour()); System.out.println("当前分:" + date.getMinute()); System.out.println("当前秒:" + date.getSecond()); /* 当前时间:2020-04-23T19:04:53.640 当前年份:2020 当前月份:APRIL 当前日:23 当前时:19 当前分:4 当前秒:53 */ } }
那么自定义日期是不是类似的方便呢?瞅瞅下面的东西 :LocalDateTime date = LocalDateTime.of(2020,10,20,10,20,10,20);
最牛逼的直接精确到纳秒
看到这里我琢磨着屏幕前的你对LocalDateTime类就了解的差不多了,下面直接来看代码:import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import static java.time.format.DateTimeFormatter.ISO_DATE; public class DateDome { public static void main(String[] args) { //创建一个2020年4月23日19时16分的时间 LocalDateTime date = LocalDateTime.of(2020,4,23,19,16); //减去一年 date = date.minusYears(1); //增加一个月 date = date.plusMonths(1); /*其他的也类似,下面高能*/ date = date.withYear(2050);//直接将年份修改到2050年 /*当然最常规的格式化操作也少不了*/ String dateFormat = date.format(ISO_DATE); /*当然他也可以把字符串转换成时间,如果想格式化日期,就是用LocalDate*/ String str = "1987-04-23 19:30"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); LocalDateTime dateTime = LocalDateTime.parse(str, formatter); System.out.println(dateTime); } }
太天真了大学生
线程安全!!!
线程安全!!!
线程安全!!!
这是Date类所不能比拟的最大的优势!!!
线程安全! 这又是SimpleDateFormat所不能比拟的。要知道SimpleDateFormat是Date类对象格式化的途径啊!!
如果以后我要是看见谁用了Date,我只能这么回复他
用了LocalDate和LocalDateTime,咱们都是
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算