java8的LocalDateTime真心好用(补充Period.between的大坑)
LocalDateTime、LocalDate是java8新增的时间工具类,最近使用后,真心觉得强大好用,推荐文章:https://www.liaoxuefeng.com/article/00141939241051502ada88137694b62bfe844cd79e12c32000
1、以下为简单的使用方法
public static void main(String[] args) {
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime startTime = LocalDateTime.now();
LocalDateTime endTime = startTime.plusDays(7);
System.out.println("开始时间:" + startTime.format(df) + ",结束时间:" + endTime.format(df));
LocalDateTime dateTest = LocalDateTime.parse("2018-02-30 12:12:12", df);
System.out.println("时间自动转化:" + dateTest.toString());
int daysNum = Period.between(startTime.toLocalDate(), endTime.toLocalDate()).getDays();
int monthNum = Period.between(startTime.toLocalDate(), endTime.toLocalDate()).getMonths();
System.out.println("相差天数:" + daysNum);
System.out.println("相差月数:" + monthNum);
System.out.println("当前时间向前推6天:" + LocalDateTime.now().minusDays(6));
System.out.println("当前时间向前推6小时:" + LocalDateTime.now().minusHours(6));
}
运行结果:

处理时间来,这个工具类真心省了不少代码!!好用
添加:根据日期获取当前为一年中的第几周
public static void main(String[] args) {
//一周从周日开始
WeekFields weekFields = WeekFields.of(DayOfWeek.SUNDAY, 7);
LocalDate today = LocalDate.now();
System.out.println(LocalDateUtil.getDateAsString(today) + "今天是今年第" + today.get(weekFields.weekOfYear()) + "周");
}
输出结果:

注意:在后期使用Period.between()方法来获取,相差天数、相差月数的时候,发现只能计算同月的天数、同年的月数,不能计算隔月的天数以及隔年的月数!!!相当的坑
更改使用方法:
1、查询两个LocalDate的相差天数
public static void main(String[] args) {
System.out.println(LocalDate.now().toEpochDay() - LocalDate.now().minusDays(5).toEpochDay());
}
2、查询两个LocalDate的相差月数
public static void main(String[] args) {
System.out.println(LocalDate.now().until(LocalDate.now().minusDays(5),ChronoUnit.MONTHS));
}
java8的LocalDateTime真心好用(补充Period.between的大坑)的更多相关文章
- JAVA8的LocalDateTime使用心得和工具类
今天做不成的事,明天也不会做好. 同学们,JAVA8出了这么久,不知道你们有没有用过它的LocalDateTime类型,还是依然用Date类型呢?其实,LocalDateTime类型给我们提供了很多便 ...
- JAVA8 中 LocalDateTime的使用小栗子
LocalDate givenDate = LocalDate.parse("2019-04-23",DateTimeFormatter.ofPattern("yyyy- ...
- java8的LocalDateTime与Date互相转换
LocalDateTime转Date Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant(); Date ...
- java8 Date Localdatetime instant 相互转化(转) 及当天的最大/最小时间
Java 8中 java.util.Date 类新增了两个方法,分别是from(Instant instant)和toInstant()方法 // Obtains an instance of Dat ...
- java8 instant localDateTime
- Java8中的LocalDateTime工具类
网上搜索了半天都没有找到Java8的LocalDateTime的工具类,只好自己写了一个,常用功能基本都有.还在用Date的Java同道该换换了. 个人项目地址:https://github.com/ ...
- java8完全解读二
继续着上次的java完全解读一 继续着上次的java完全解读一1.强大的Stream API1.1什么是Stream1.2 Stream操作的三大步骤1.2.1 创建Stream1.2.2 Strea ...
- Java 线程安全LocalTime 和LocaldateTime 新的Date和Time类 -JDK8新时间类的简单使用
不可变类且线程安全 LocalDate .java.time.LocalTime 和LocaldateTime 新的Date和Time类 DateTimeFormatter ==https://ww ...
- java8日期时间
###与时间有关的5个包* java.time* java.time.chrono* java.time.format* java.time.temporal* java.time.zone###ja ...
随机推荐
- 22.Extjs Panel中显示多行工具栏(tbar)
转自:http://blog.sina.com.cn/s/blog_454fbf740100t0xj.html 在应用程序的制作中,我们经常性的会用到工具栏,在Extjs中Panel中提供了tbar和 ...
- 配置URL
- 手机访问PC网站自动跳转到手机网站代码
方法一: <script type="text/javascript"> try { var urlhash = window.location.hash; if (! ...
- bzoj 3743: [Coci2015]Kamp【树形dp】
两遍dfs一遍向下,一边向上,分别记录子树内人数a,当前点到所有点的距离b,最大值c和次大值d,最大值子树p 然后答案是2b-c #include<iostream> #include&l ...
- GIT学习之路第三天 文件操作
本文参考廖雪峰老师的博客进行总结,完整学习请转廖雪峰博客 一.版本回退 1.git log提交日志 在git中可以通过个git log 命令显示从最近到最远的提交日志. $ git log commi ...
- hdu2032
http://acm.hdu.edu.cn/showproblem.php?pid=2032 #include<stdio.h> #include<math.h> #inclu ...
- ToolBar教程:AppCompatActivity下用toolbar当actionbar用
参考: https://developer.android.com/training/appbar/index.html 1,自定义toolbar主题 2,在布局xml中使用toolbar 3,在代码 ...
- A8ERP权限管理系统
- ubuntu下删除和新建用户(并有su权限)
http://blog.csdn.net/speedme/article/details/8206144ubuntu下删除和新建用户(并有su权限) 如何创建ubuntu新用户?输入:sudo add ...
- (转)中国电信友华PT921、PT921G光猫设置路由,无线WIFI设置
中国电信友华PT921.PT921G光猫设置路由,无线WIFI设置. 第一步,用管理员帐号密码登陆,打开浏览器,输入http://192.168.1.1 登陆帐号:telecomadmin登陆密码:n ...