JAVA8新特性中添加的时间处理类,相比与以前使用的Date和Canlendar类,该类在时间处理上更加的简单方便。下面记录一些常用的方法。

目录

一、获取LocalDateTime类型的时间(静态方法)

1. LocalDateTime.now()

2. LocalDateTime.now(ZoneId zoneId)

3. LocalDateTime.of(int year, int month, int dayOfMonth, int hour, int minute)

4. LocalDateTime.parse(CharSequence text)

5. LocalDateTime.parse(CharSequence text,  DateTimeFormatter formatter)

实例如下:

二、增加、减少指定时间(实例方法)

1. localDateTime.plus(TemporalAmount amount)

2. localDateTime.plus(long amountToAdd, TemporalUnit unit)

3. localDateTime.plusYears(long years)

4. localDateTime.plusMonths(long months)

5. localDateTime.plusWeeks(long weeks)

6. localDateTime.plusDays(long days)

7. localDateTime.plusHours(long hours)

8. localDateTime.minus(TemporalAmount amount)

实例如下:

三、修改指定的时间,如将时间修改为当月第一天、当月最后一天、第几周等

1. localDateTime.with(TemporalAdjuster adjuster)

2. localDateTime.withYear(int year)

实例如下:

四、获取指定的时间,如当前时间的周、年、天等

1. localDateTime.getYear()

五、获取两个时间相差的年月日等

1. localDateTime.until(Temporal endTime, TemporalUnit unit);

实例如下:

六、时间类的相互转换

1. 转换成LocalDate与LocalTime


一、获取LocalDateTime类型的时间(静态方法)

1. LocalDateTime.now()

从默认时区的系统时钟获取当前的日期时间。

2. LocalDateTime.now(ZoneId zoneId)

从指定时区的系统时钟获取当前的日期时间。

3. LocalDateTime.of(int year, int month, int dayOfMonth, int hour, int minute)

从年,月,日,小时和分钟获得 LocalDateTime的实例,将秒和纳秒设置为零。

LocalDateTime.of有很多重载函数,根据不同的情况使用不同的函数。

4. LocalDateTime.parse(CharSequence text)

从一个文本字符串(如 2007-12-03T10:15:30获取一个 LocalDateTime的实例。

5. LocalDateTime.parse(CharSequence text,  DateTimeFormatter formatter)

使用特定的格式化 LocalDateTime从文本字符串获取 LocalDateTime的实例。

实例如下:

    public void test() throws Exception{//北京时间LocalDateTime dateTime1 = LocalDateTime.now();//美国洛杉矶时间LocalDateTime dateTime2 = LocalDateTime.now(ZoneId.of("America/Los_Angeles"));//2020年12月1日 13时50分LocalDateTime dateTime3 = LocalDateTime.of(2020, 12, 1, 13, 50);//2020年12月2日 8时50分30秒LocalDateTime dateTime4 = LocalDateTime.of(2020, 12, 2, 8, 50, 30);//2020年12月14日 12时50秒LocalDateTime dateTime5 = LocalDateTime.parse("2020-12-14T12:00:50");//2020年12月8日 17时30分50秒LocalDateTime dateTime6 = LocalDateTime.parse("2020-12-08 17:30:50", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));System.out.println("北京时间:" + dateTime1.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));System.out.println("美国洛杉矶时间:" + dateTime2.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));System.out.println("指定时间1:" + dateTime3.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));System.out.println("指定时间2:" + dateTime4.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));System.out.println("指定时间3:" + dateTime5.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));System.out.println("指定时间4:" + dateTime6.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));}

输出结果如下:

二、增加、减少指定时间(实例方法)

1. localDateTime.plus(TemporalAmount amount)

通常会回调到LocalDateTime.plus(long amountToAdd, TemporalUnit unit)

2. localDateTime.plus(long amountToAdd, TemporalUnit unit)

指定增加的数量,指定增加的单位,如天、月、年,这里需要注意的是,单位传递可以使用Chronounit来获取对应的TemporalUnit的参数值,比如这样调用:

LocalDateTime dateTime2 = dateTime1.plus(5, ChronoUnit.DAYS);指定对dateTime1增加5天时间

3. localDateTime.plusYears(long years)

4. localDateTime.plusMonths(long months)

5. localDateTime.plusWeeks(long weeks)

6. localDateTime.plusDays(long days)

7. localDateTime.plusHours(long hours)

可以直接通过方法名知道,这是指定了单位的添加,不需要我们自定义添加单位,更加方便使用,从年到秒都有相应的函数。

与增加时间相反的则是减少时间,减少时间使用minus()函数

8. localDateTime.minus(TemporalAmount amount)

减少时间的函数的使用和增加时间函数使用一致,这里不再阐述。

实例如下:

    public void test() throws Exception{//北京时间LocalDateTime dateTime1 = LocalDateTime.now();LocalDateTime dateTime2 = dateTime1.plus(5, ChronoUnit.DAYS);//应该是2021年1月2日了LocalDateTime dateTime3 = dateTime1.plusDays(7);LocalDateTime dateTime4 = dateTime1.minus(5, ChronoUnit.DAYS);System.out.println("当前时间:" + dateTime1.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));System.out.println("自定义增加5天:" + dateTime2.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));System.out.println("增加7天:" + dateTime3.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));System.out.println("自定义减少5天:" + dateTime4.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));}

输出结果如下:

三、修改指定的时间,如将时间修改为当月第一天、当月最后一天、第几周等

1. localDateTime.with(TemporalAdjuster adjuster)

一个简单的调整器可能只是设置一个字段,如年份字段。 更复杂的调整器可能会将日期设置为该月的最后一天。 TemporalAdjuster提供了一些常见的调整 。 这些包括找到“月的最后一天”和“下周三”。

获取当月最后一天如下:

LocalDateTime lastDayOfMonth = localDateTime.with(TemporalAdjusters.lastDayOfMonth());

2. localDateTime.withYear(int year)

返回一个localDateTime改变了年份的时间,时间改为参数,如,年份改成2015,参数就是2015,其他如月、日、时、分、秒则不变,其他withDay()等方法不再阐述。

实例如下:

    public void test() throws Exception{//北京时间LocalDateTime dateTime1 = LocalDateTime.now();LocalDateTime dateTime2 = dateTime1.with(TemporalAdjusters.firstDayOfMonth());LocalDateTime dateTime3 = dateTime1.withYear(2015);LocalDateTime dateTime4 = dateTime1.withHour(4);LocalDateTime dateTime5 = dateTime1.with(TemporalAdjusters.firstDayOfMonth()).withHour(0).withMinute(0).withSecond(0);System.out.println("当前时间:" + dateTime1.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));System.out.println("时间修改为当前时间当月的第一天:" + dateTime2.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));System.out.println("时间年份修改为2015的时间:" + dateTime3.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));System.out.println("小时改变为凌晨4时的时间:" + dateTime4.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));System.out.println("当前时间的当月第一天0时0点0分0秒:" + dateTime5.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));}

输出结果如下:

四、获取指定的时间,如当前时间的周、年、天等

1. localDateTime.getYear()

返回当前时间的年份,其他诸如getDayOfMonth()等不再阐述,可以上面阐述的修改指定时间配合返回需要的年份、天数等。

五、获取两个时间相差的年月日等

1. localDateTime.until(Temporal endTime, TemporalUnit unit);

根据指定的单位计算到另一个日期时间的时间量。这里计算的就是localDateTime到endTime需要增加的单位,下面的例子能更好说明。

实例如下:

    public void testMethod1() throws Exception {List<LocalDateTime> dateTimes = new LinkedList<>();LocalDateTime dateTime1 = LocalDateTime.of(2018, 12, 28, 0, 0);//天LocalDateTime dateTime2 = LocalDateTime.of(2018, 12, 21, 0, 0);LocalDateTime dateTime3 = LocalDateTime.of(2018, 12, 21, 8, 40);//月LocalDateTime dateTime4 = LocalDateTime.of(2018, 11, 28, 0, 0);LocalDateTime dateTime5 = LocalDateTime.of(2018, 11, 21, 8, 40);LocalDateTime dateTime51 = LocalDateTime.of(2018, 11, 28, 8, 40);//年LocalDateTime dateTime6 = LocalDateTime.of(2019, 12, 28, 0, 0);LocalDateTime dateTime7 = LocalDateTime.of(2019, 12, 21, 8, 40);//时LocalDateTime dateTime8 = LocalDateTime.of(2018, 12, 28, 8, 0);LocalDateTime dateTime9 = LocalDateTime.of(2018, 12, 28, 8, 40);long year1 = dateTime1.until(dateTime6, ChronoUnit.YEARS);long year2 = dateTime1.until(dateTime7, ChronoUnit.YEARS);long month1 = dateTime1.until(dateTime4, ChronoUnit.MONTHS);long month2 = dateTime1.until(dateTime5, ChronoUnit.MONTHS);long month3 = dateTime1.until(dateTime51, ChronoUnit.MONTHS);long day1 = dateTime1.until(dateTime2, ChronoUnit.DAYS);long day2 = dateTime1.until(dateTime3, ChronoUnit.DAYS);long hour1 = dateTime1.until(dateTime8, ChronoUnit.HOURS);long hour2 = dateTime1.until(dateTime9, ChronoUnit.HOURS);dateTimes.add(dateTime1);dateTimes.add(dateTime2);dateTimes.add(dateTime3);dateTimes.add(dateTime4);dateTimes.add(dateTime5);dateTimes.add(dateTime6);dateTimes.add(dateTime7);dateTimes.add(dateTime8);dateTimes.add(dateTime9);int count = 0;for (LocalDateTime localDateTime : dateTimes) {count++;System.out.println("date" + count + ":" + localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));}System.out.println("年:" + year1);System.out.println("年:" + year2);System.out.println("月:" + month1);System.out.println("月:" + month2);System.out.println("月:" + month3);System.out.println("日:" + day1);System.out.println("日:" + day2);System.out.println("时:" + hour1);System.out.println("时:" + hour2);}

输出结果如下:

六、时间类的相互转换

1. 转换成LocalDate与LocalTime

localDateTime.toLocalDate();localDateTime.toLocalTime();

这里就不再写转换成Date与Canlendar的实例,其一是LocalDateTime毕竟是对前两者的优化,所以前两者能做的,LocalDateTime也能做,并且可能会更方便,其二就是拿到了LocalDateTime,想转成其他类型,配合上面阐述的方法,可以有很多转化路径。

Java——LocalDateTime相关推荐

  1. Java LocalDateTime

    Java LocalDateTime class is part of Java 8 Date API. Java LocalDateTime类是Java 8 Date API的一部分. Java L ...

  2. Java LocalDateTime 和 Date 互转

    Java LocalDateTime 和 Date 互转 1 LocalDateTime -> Date 2 Date -> LocalDateTime 3 str -> Local ...

  3. Java LocalDateTime类| 带示例的getDayOfWeek()方法

    LocalDateTime类getDayOfWeek()方法 (LocalDateTime Class getDayOfWeek() method) getDayOfWeek() method is ...

  4. Java LocalDateTime类| 带示例的getMinute()方法

    LocalDateTime类getMinute()方法 (LocalDateTime Class getMinute() method) getMinute() method is available ...

  5. Java LocalDateTime类| 带示例的compareTo()方法

    LocalDateTime类compareTo()方法 (LocalDateTime Class compareTo() method) compareTo() method is available ...

  6. Java LocalDateTime类| 带示例的getDayOfYear()方法

    LocalDateTime类getDayOfYear()方法 (LocalDateTime Class getDayOfYear() method) getDayOfYear() method is ...

  7. java LocalDateTime 加时间,计算两个时间的差

    LocalDateTime localDateTime = LocalDateTime.now();localDateTime= localDateTime.plusDays(1);//加一天 计算两 ...

  8. Java LocalDateTime给当前时间加半小时

    前言 现在有这样一个需求,需要将当前时间加上半小时返回给前端,在Java8之后推荐用LocalDateTime来替换Date,它提供了丰富的方法给我们来调用,那我们来实现一下 实现 如图所示,我们使用 ...

  9. JAVA LocalDateTime 获取当前年份的开始时间和去年开始时间

    使用JKD8提供的时间工具 获取当年的开始时间 和去年开始时间 LocalDateTime thisYear = LocalDateTime.of(LocalDate.now().getYear(), ...

最新文章

  1. c#语言程序设计实例,C#语言程序设计用.ppt
  2. 谷歌大脑AutoML最新进展:用进化算法发现神经网络架构
  3. Unicode 和 UTF-8关系
  4. Node Capital生态布局初成,部分项目差强人意
  5. 七十一、Vue项目城市选择页搜索逻辑实现,边输入边搜索功能的解决办法:节流函数
  6. 海量数据处理:如何从10亿个数中,找出最大的10000个数?(top K问题)
  7. ElasticSearch基本插件head
  8. Teams架构剖析(2019年版本)
  9. BestCoder22 1003.NPY and shot 解题报告
  10. C#结合Jquery LigerUI Tree插件构造树
  11. 端口被占用,怎么解决?
  12. 2018春节前新马泰游
  13. 基于android的团购app设计与实现,基于Android的掌上团购App设计与实现
  14. NIST 发布关于使用“行政令-关键软件”的安全措施指南
  15. java表达式7|3,Chapter3 Java运算符
  16. Java入门教程:Java初学者容易犯的错误
  17. 阿里云服务器如何更换系统镜像
  18. java前端 js弹出框_前端js弹出框组件使用方法
  19. GDB中打印pthread_internal_t的方法
  20. Spark中RDD的sortBy排序的5种实现方法

热门文章

  1. 联想Think Server TS540/440蓝屏故障处理
  2. eigen 列拼接_cufflinks
  3. 车牌定位系统matlab,基于Matlab的车牌定位系统的研究与设计论文
  4. python输入一个小数,提取整数部分
  5. uniapp开发:uniapp快速体验vue3.2之setup语法糖,怎么使用怎么爽
  6. 服务器被攻击导致CPU100%的解决
  7. EXCELL XLToolbox科研作图插件
  8. html实现弹窗输入
  9. wrcoef2函数_二维离散小波变换函数使用总结
  10. php统计邮件打开率,监控 Amazon SES 电子邮件的打开率、点击率和退回率