Java——LocalDateTime
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相关推荐
- Java LocalDateTime
Java LocalDateTime class is part of Java 8 Date API. Java LocalDateTime类是Java 8 Date API的一部分. Java L ...
- Java LocalDateTime 和 Date 互转
Java LocalDateTime 和 Date 互转 1 LocalDateTime -> Date 2 Date -> LocalDateTime 3 str -> Local ...
- Java LocalDateTime类| 带示例的getDayOfWeek()方法
LocalDateTime类getDayOfWeek()方法 (LocalDateTime Class getDayOfWeek() method) getDayOfWeek() method is ...
- Java LocalDateTime类| 带示例的getMinute()方法
LocalDateTime类getMinute()方法 (LocalDateTime Class getMinute() method) getMinute() method is available ...
- Java LocalDateTime类| 带示例的compareTo()方法
LocalDateTime类compareTo()方法 (LocalDateTime Class compareTo() method) compareTo() method is available ...
- Java LocalDateTime类| 带示例的getDayOfYear()方法
LocalDateTime类getDayOfYear()方法 (LocalDateTime Class getDayOfYear() method) getDayOfYear() method is ...
- java LocalDateTime 加时间,计算两个时间的差
LocalDateTime localDateTime = LocalDateTime.now();localDateTime= localDateTime.plusDays(1);//加一天 计算两 ...
- Java LocalDateTime给当前时间加半小时
前言 现在有这样一个需求,需要将当前时间加上半小时返回给前端,在Java8之后推荐用LocalDateTime来替换Date,它提供了丰富的方法给我们来调用,那我们来实现一下 实现 如图所示,我们使用 ...
- JAVA LocalDateTime 获取当前年份的开始时间和去年开始时间
使用JKD8提供的时间工具 获取当年的开始时间 和去年开始时间 LocalDateTime thisYear = LocalDateTime.of(LocalDate.now().getYear(), ...
最新文章
- c#语言程序设计实例,C#语言程序设计用.ppt
- 谷歌大脑AutoML最新进展:用进化算法发现神经网络架构
- Unicode 和 UTF-8关系
- Node Capital生态布局初成,部分项目差强人意
- 七十一、Vue项目城市选择页搜索逻辑实现,边输入边搜索功能的解决办法:节流函数
- 海量数据处理:如何从10亿个数中,找出最大的10000个数?(top K问题)
- ElasticSearch基本插件head
- Teams架构剖析(2019年版本)
- BestCoder22 1003.NPY and shot 解题报告
- C#结合Jquery LigerUI Tree插件构造树
- 端口被占用,怎么解决?
- 2018春节前新马泰游
- 基于android的团购app设计与实现,基于Android的掌上团购App设计与实现
- NIST 发布关于使用“行政令-关键软件”的安全措施指南
- java表达式7|3,Chapter3 Java运算符
- Java入门教程:Java初学者容易犯的错误
- 阿里云服务器如何更换系统镜像
- java前端 js弹出框_前端js弹出框组件使用方法
- GDB中打印pthread_internal_t的方法
- Spark中RDD的sortBy排序的5种实现方法
热门文章
- 联想Think Server TS540/440蓝屏故障处理
- eigen 列拼接_cufflinks
- 车牌定位系统matlab,基于Matlab的车牌定位系统的研究与设计论文
- python输入一个小数,提取整数部分
- uniapp开发:uniapp快速体验vue3.2之setup语法糖,怎么使用怎么爽
- 服务器被攻击导致CPU100%的解决
- EXCELL XLToolbox科研作图插件
- html实现弹窗输入
- wrcoef2函数_二维离散小波变换函数使用总结
- php统计邮件打开率,监控 Amazon SES 电子邮件的打开率、点击率和退回率