输出
Instant = 2020-06-10 16:02:26
这样就比较容易的解决了格式化的问题,当然你也可以自定义一个@config来完成对Instant的格式化,也不失为一种一劳永逸的方案 。LocalDateTime和DateTimeFormatter在后面的内容中会做详细的介绍 。
在讲解LocalDateTime之前我们先分别介绍一下LocalDate和LocalTime,以便于能更深入地理解LocalDateTime 。
LocalDate和LocalTimeLocalDateLocalDate首先是一个不可变类,默认格式为yyyy-MM-dd,其次它是一个只获取年月日的类,侧重点在日历而不是时间(这里我们需要把日历和时间这两个概念区分开) 。
使用LocalDate.now()可以获取当前年月日,也可以使用LocalDate.of(year,month,dayOfMonth)来指定日期
public static void main(String[] args) { LocalDate today = LocalDate.now(); System.out.println("LocalDate.now() = "+today); today = LocalDate.of(2020,06,10); LocalDate laterDate = today.plusDays(30); System.out.println("LocalDate.of() = "+today.toString()); System.out.println("plusDays = "+laterDate.toString()); System.out.println("new Date() = "+ new Date());}
输出
【Java各个时间类总结归纳,最全一篇】LocalDate.now() = 2020-06-09LocalDate.of() = 2020-06-10plusDays = 2020-07-10new Date() = Tue Jun 09 20:31:22 CST 2020
从这个例子可以对比看出LocalDate和Date的不同 。
同时作为一个访问器方法,LocalDate每次都是生成一个新的对象,而不是改变原有的对象的值 。
可以从today.plusDays(30)中轻易地看到 。与之类似的就是更改器方法,在java较早的版本中有一个类java.util.GregorianCalendar
public static void main(String[] args) { GregorianCalendar someDay = new GregorianCalendar(2020,06,9); System.out.println("before someDay = "+someDay.getTime()); someDay.add(Calendar.DAY_OF_MONTH,30); System.out.println("after someDay = "+someDay.getTime());}
输出
before someDay = Thu Jul 09 00:00:00 CST 2020after someDay = Sat Aug 08 00:00:00 CST 2020
可以看到someDay的值随着函数add的调用一直在变化着,这与LocalDate大不一样,这是需要注意的一个点 。
这边还需要注意一个点是localDate.getDayOfWeek().getValue(),LocalDate对于一周的枚举计数和Calendar有些不一样 。
LocalDate一周是从周一开始计数对应的value值为1,周日结束对应的value值为7 。
而Calendar一周是从周日开始计数对应的value值为1,周六结束对应的value为7,相比较下个人觉得LocalDate更加合理和好用一些 。
LocalDate常用的方法如下:
图片来自java核心技术卷2
文章插图
文章插图
LocalTimeLocalTime与LocalDate类似同样是一个不可变类,默认格式是HH:mm:ss.zzz,可以看到它所关注的是当前的时刻 。
public static void main(String[] args) { LocalTime localTime = LocalTime.now(); System.out.println("LocalTime.now() = "+localTime); localTime = LocalTime.of(8,8,8,888); System.out.println("LocalTime.of() = "+localTime); LocalTime laterTime = localTime.plusHours(2); System.out.println("localTime.plusHours() = "+laterTime); //根据时区获取当前时刻,同理适用与LocalDate LocalTime newlocalTime = LocalTime.now(ZoneId.of("America/New_York")); System.out.println("America/New_York Time = "+newlocalTime);}
输出LocalTime.now() = 20:58:54.941LocalTime.of() = 08:08:08.000000888localTime.plusHours() = 10:08:08.000000888America/New_York Time = 08:58:54.944
这里我们会发现,尽管LocalTime默认的格式为HH:mm:ss.zzz,但是纳秒级别的精度它也是能支持的08:08:08.000000888 。LocalTime常用的方法如下:文章插图
java核心技术卷2
LocalDateTime经过对LocalDate和LocalTime的介绍,LocalDateTime相信大家也已经知道如何使用了 。
推荐阅读
- Java集合-Iterator
- Google开源Java图片处理类库Thumbnail
- JavaScript 各种遍历方式详解
- 西安全运会时间是何时?
- 汽车保养周期看公里数还是看时间
- 今年新茶更爱装嫩,浙江为今年新茶上市赢得时间
- 君山银针生产上市时间,君山银针的简历
- 喝茶细节之安排座位,喝茶要注意时间和体质
- 喝茶的时间应如何把握,如何看云南七子茶饼的年份
- JavaScript的宏任务和微任务