LocalDate和LocalTime的用法介绍
在JAVA中,常用的处理日期和时间的类主要有Date,Calendar,而在JDK1.8中,新增了两个处理日期和时间的类,一个是LocalDate,另一个是LocalTime,下面我来介绍一下这两个类中常用方法的用法。
1、LocalDate
LocalDate主要是用来处理日期的类,主要有以下方法:
方法 | 说明 | 举例 |
LocalDate.now() | 获取当前日期 |
LocalDate localDate = LocalDate.now(); 运行结果为:2019-01-07 |
LocalDate.of(int year, int month, int dayOfMonth) |
根据参数设置日期,参数分别为年,月,日 |
LocalDate localDate = LocalDate.of(2019,1,7); 运行结果为:2019-01-07 |
localDate.getDayOfMonth() localDate.getDayOfWeek() localDate.getDayOfYear() |
获取当前日期是所在月的第几天 获取当前日期是星期几(星期的英文全称) 获取当前日期是所在年的第几天 |
LocalDate localDate = LocalDate.of(2019,1,7); 运行结果为:7,MONDAY,7 |
localDate.getMonth() localDate.getMonthValue() localDate.lengthOfMonth() |
获取当前日期所在月份(月份的英文全称)
获取当前日期所在月份的数值 获取当前日期所在月份有多少天 |
LocalDate localDate = LocalDate.of(2019,1,7); 运行结果为:JANUARY,1,31 |
localDate.lengthOfYear() localDate.isLeapYear() |
获取当前日期所在年有多少天 获取当前日期所在年是否是闰年 |
LocalDate localDate = LocalDate.of(2019,1,7); 运行结果为:365,false |
localDate.withDayOfMonth(int dayOfMonth) localDate.withDayOfYear(int dayOfYear) localDate.withMonth(int month) localDate.withYear(int year) |
with开头的方法,我的理解是将参数替换localDate中的对应 属性,重新计算得到新的日期。 将参数中的"日"替换localDate中的"日" 将参数中的天数替换localDate中的天数 将参数中的"月"替换localDate中的"月" 将参数中的"年"替换localDate中的"年" |
LocalDate localDate = LocalDate.of(2019,1,7); 运行结果为: 2019-01-02, 2019-02-09, 2019-02-07, 2020-01-07 |
localDate.minusDays(long days) localDate.minusWeeks(long weeks) localDate.minusMonths(long months) localDate.minusYears(long years) localDate.plusDays(long days) localDate.plusWeeks(long weeks) localDate.plusMonths(long months) localDate.plusYears(long years) |
将当前日期减一天 将当前日期减一周 将当前日期减一月 将当前日期减一年 将当前日期加一天 将当前日期加一周 将当前日期加一月 将当前日期加一年 |
![]() LocalDate localDate = LocalDate.of(2019,1,7); ![]() 运行结果为: 2019-01-06 |
2、LocalTime
LocalTime主要是用来处理时间的类,主要有以下方法:
方法 | 说明 | 举例 |
LocalTime.now() | 获取当前时间 |
LocalTime localTime = LocalTime.now(); 运行结果为:22:53:44.277 |
LocalTime.of(int hour, int minute) LocalTime.of(int hour, int minute, int second) |
根据参数设置时间,参数分别为时,分 根据参数设置时间,参数分别为时,分,秒 |
LocalTime localTime = LocalTime.of(12,35,59); 运行结果为:12:35:59,12:35 |
localTime.getHour() localTime.getMinute() localTime.getSecond() |
获取当前时间的小时数 获取当前时间的分钟数 获取当前时间的秒数 |
LocalTime localTime = LocalTime.of(12,35,59); 运行结果为:12,35,59 |
localTime.withHour(int hour) localTime.withMinute(int minute) localTime.withSecond(int second) |
with开头的方法,我的理解是将参数替换localTime中的对应属性, 重新计算得到新的时间。 将参数中的"小时"替换localTime中的"小时" 将参数中的"分钟"替换localTime中的"分钟" 将参数中的"秒"替换localTime中的"秒" |
LocalTime localTime = LocalTime.of(12,35,59); 运行结果为: 01:35:59 |
localTime.minusHours(long hours) localTime.minusMinutes(long minutes) localTime.minusSeconds(long seconds) localTime.plusHours(long hours) localTime.plusMinutes(long minutes) localTime.plusSeconds(long seconds) |
将当前时间减一小时 将当前时间减一分钟 将当前时间减一秒 将当前时间加一小时 将当前时间加一分钟 将当前时间加一秒 |
![]() LocalTime localTime = LocalTime.of(12,35,59); ![]() 运行结果为: 11:35:59 |
3、日期 + 时间
从1和2中可以看出,LocalDate的方法主要都是用来处理日期的,而LocalTime的方法主要都是用来处理时间的,但两个类都提供了表示日期 + 时间的方法。
LocalDate提供了atTime方法,用来表示日期 + 时间
LocalDate localDate = LocalDate.of(2019,1,7);
System.out.println(localDate.atTime(LocalTime.now()));
System.out.println(localDate.atTime(10,30));
System.out.println(localDate.atTime(10,30,59));
运行结果为:
2019-01-07T23:21:32.804
2019-01-07T10:30
2019-01-07T10:30:59
LocalTime提供了atDate方法,用来表示日期 + 时间
LocalTime localTime = LocalTime.of(12,35,59);
System.out.println(localTime.atDate(LocalDate.of(2019,1,7)));
运行结果为:2019-01-07T12:35:59
4、格式转换
从3中我们可以看出,表示日期 + 时间后,格式发生了变化,原来atTime和atDate方法的返回值都是LocalDateTime类,这个类把toString()方法重写了,导致输出的格式变化了。
@Override
public String toString() {
return date.toString() + 'T' + time.toString();
}
那么想要转换日期或时间的格式该怎么办呢?
LocalDate和LocalTime都提供了格式转换的方法,format和parse
方法 | 说明 | 举例 |
LocalDate.format(DateTimeFormatter formatter) |
将LocalDate类型的数据转换为String类型的数据,参数为DateTimeFormatter类,该类提供了ofPattern(String pattern)方法,可传入相应的日期格式: yyyy, yyyy-MM, yyyy-MM-dd, yyyy-MM-dd HH, yyyy-MM-dd HH:mm, yyyy-MM-dd HH:mm:ss 注:若LocalDate未调用atTime方法,则表示LocalDate只表示日期,则此时不能转换带有时间格式的表示式 |
![]() LocalDate localDate = LocalDate.of(2019,1,7); ![]() 运行结果为: 2019 |
LocalTime.format(DateTimeFormatter formatter) |
将LocalTime类型的数据转换为String类型的数据,参数为DateTimeFormatter类, 该类提供了ofPattern(String pattern)方法,可传入相应的日期格式: yyyy, yyyy-MM, yyyy-MM-dd, yyyy-MM-dd HH, yyyy-MM-dd HH:mm, yyyy-MM-dd HH:mm:ss 注:若LocalTime未调用atDate方法,则表示LocalTime只表示时间,则此时不能转换带有日期格式的表示式 |
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); 运行结果为:2019-01-07 23:07:06 其他格式这里就不一一列举了 |
LocalDate.parse(CharSequence text) |
将日期字符串转换成LocalDate类型,不能转换带时间格式的字符串 |
System.out.println(LocalDate.parse("2019-10-15")); 运行结果为:2019-10-15 |
LocalTime.parse(CharSequence text) |
将时间字符串转换成LocalTime类型,不能转换带日期格式的字符串 |
System.out.println(LocalTime.parse("22:35:40")); 运行结果为:22:35:40 |
5、总结
JDK1.8将处理日期和时间的类从原来的Date,Calendar变成了LocalDate和LocalTime两个类,从原来的一个类处理日期 + 时间,变成了由两个类各司其职,更加体现了面向对象的思想,两个类都各自提供了相应范围内的方法,个人觉得有利有弊。有利的是两个类对各自范围内的日期(时间)的计算都提供了更好的处理方法,双方互不干扰,更加的方便。不利的是在同时需要日期和时间的场景下,这两个类目前提供的atTime和atDate方法还不能令人满意,使用起来不是很方便(还需要转换一下格式)。另外,LocalDate类型对应数据库的日期类型的字段时,是否可以像Date类型那样方便,有待研究。
好了,先说到这吧!
LocalDate和LocalTime的用法介绍的更多相关文章
- java8中的localdate和localtime用法举例
java8中的localdate和localtime用法举例如下:这两个方法使我们可以方便的实现将旧的日期类转换为新的日期类,具体思路都是通过Instant当中介,然后通过Instant来创建Loca ...
- 好压(HaoZip)的命令行模式用法介绍
好压压缩软件,又叫“2345好压”,是一款国产的优秀压缩软件,目前是免费的,据官网介绍,该软件永久免费.官网地址:http://haozip.2345.com/ 本文主要对该软件的命令行模式用法进行介 ...
- sql事务(Transaction)用法介绍及回滚实例
sql事务(Transaction)用法介绍及回滚实例 事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务, S ...
- STL vector用法介绍
STL vector用法介绍 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和f ...
- 怎么通过activity里面的一个按钮跳转到另一个fragment(android FragmentTransaction.replace的用法介绍)
即:android FragmentTransaction.replace的用法介绍 Fragment的生命周期和它的宿主Activity密切相关,几乎和宿主Activity的生命周期一致,他们之间最 ...
- Oracle CASE WHEN 用法介绍[Z]
Oracle CASE WHEN 用法介绍 1. CASE WHEN 表达式有两种形式 --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ...
- LinqToXml高级用法介绍
LinqToXml高级用法介绍 一.函数构造 什么是函数构造?其是指通过单个语句构建XML树的能力. 那么它有什么作用呢? 作用1.用单个表达式快速创建复杂的XML树 见实例代码CreateXml( ...
- Oracle学习笔记_06_CASE WHEN 用法介绍
1. CASE WHEN 表达式有两种形式 --简单Case函数 CASE sex ' THEN '男' ' THEN '女' ELSE '其他' END --Case搜索函数 CASE ' THEN ...
- mysql进阶(六)模糊查询的四种用法介绍
mysql中模糊查询的四种用法介绍 这篇文章主要介绍了mysql中模糊查询的四种用法,需要的朋友可以参考下. 下面介绍mysql中模糊查询的四种用法: 1 %: 表示任意0个或多个字符.可匹配任意类型 ...
随机推荐
- 洛谷P4526 【模板】自适应辛普森法2
P4526 [模板]自适应辛普森法2 洛谷传送门 题目描述 计算积分 保留至小数点后5位.若积分发散,请输出"orz". 输入格式 一行,包含一个实数,为a的值 输出格式 一行,积 ...
- 如何在Mac电脑上隐藏视频文件?
我们都有一些秘密视频,我们只想保留在Mac,iPhone或iPad上.为了完全安全地在Mac上隐藏视频文件,我们提供了两种种最简单的方法.下面就来看一下,如何在Mac上隐藏私密视频文件? 在iTune ...
- poj 2528 线段树区间修改+离散化
Mayor's posters POJ 2528 传送门 线段树区间修改加离散化 #include <cstdio> #include <iostream> #include ...
- Pr制作音乐相册
Pr制作音乐相册 设置蒙版效果
- linux命令su,sudo 使用和区别
1- sudo 与 su 两个命令的最大区别是: sudo 命令需要输入当前用户的密码,su 命令需要输入 root 用户的密码.另外一个区别是其默认行为.sudo 命令只允许使用提升的权限运行单个命 ...
- [[FJOI2016]神秘数][主席树]
明白之后 5min 就写好了-自闭- 这题的题意是问你 \([L,R]\) 区间的数字不能构成的数字的最小值- 首先考虑 如果 \([1,x]\) 可以被表示 那么加入一个 \(a_i\) 显然 \( ...
- 如何在Mac OS X上将PDF转换为Microsoft Word
Lighten PDF to Word Converter for Mac是一个简单但功能强大的应用程序,可将PDF文件准确,轻松地转换为Microsoft Word.它可以保留原始内容的布局,格式, ...
- Mac下安装MySQL8的问题
黑苹果用了一段时间之后,发现很多方面用起来比Windows还舒服些,没什么具体指标,就是纯粹一种感觉. 所以,慢慢将很多程序都迁移过来,在迁移过程中发现的一些有意思的事儿,我都把他们记录下来.如果,不 ...
- 报表平台发行说明(V0.0.0.1)
开发周期:共20天(2019-11-04~2019-11-23) 发布日期:2019-11-23 主要功能说明: 1 整体功能技术选型,前端(html+CSS+javascript)+Web API ...
- os常用讲解
os.mkdir()创建单个不存在的空目录,无法创建多个或者已经存在的含有文件的同名目录 os.makedirs() 能够递归创建多个目录,如果目录已经存在即使都是空的或者目录已经存在且含有文件,则引 ...