Java8的新增的时间类和格式化 1

	对于LocalDate的测试

java8新增了许多,其中常用的时间类 TestLocalDate LocalTime LocalDateTime,都是不可变且线程安全的
原来的Date和Calenter有许多缺陷,新加入的3个类更加安全,并且3个的功能也分开了

1 : LocalDate :专门处理日期 LocalDate是不可变且线程安全的

2 : LocalTime :专门处理时间 LocalTime也是不可变且线程安全的

3 : LocalDateTime : 可以说是 上面二者的结合, 同样是线程安全且不可变的

import java.time.LocalDate;
import java.time.Clock;

public class TestLocalDate {

                public static void main(String[] args){
                
                
                    //第一种构造方法,从时钟获取日期 ,无参的话就是默认系统的时钟      2018-12-18
                  LocalDate date1= LocalDate.now();
                  System.out.println(date1);
                  
                  
                  //这种写法和上面一样,就是获取了当前时区的时钟
                  LocalDate dat = LocalDate.now(Clock.systemUTC());//Clock.systemDefaultZone()
                  System.out.println(dat);


                  //第二种构造方法,指定年月日来构造日期
                  LocalDate date2 = LocalDate.of(2018,2,4);
                  System.out.println(date2);


                    //第三种构造方法,传入一个long类型的数,该时间是从1970 -01-01月开始计算的
                    LocalDate date3 = LocalDate.ofEpochDay(123132);
                   System.out.println(date3);

                   //第四种构造方法,指定一个文本字符串,从这个文本字符串种读取时间,但是这个文本字符串必须符合标准
                    //即使将 03 改为 3 也不行
                  LocalDate date4 = LocalDate.parse("2000-12-03");
                  System.out.println(date4);


                  //具体的方法
                  System.out.println(date1.getMonth()); //返回当前日期的月份
                
                  System.out.println(date1.getYear());  //返回当前日期的年份
                
                  System.out.println(date1.getDayOfMonth());//返回当前日期的天数是这个月的第几天
                  
                  System.out.println(date1.getDayOfYear());//返回当前日期的天数是这一年中的第几天
                  
                  System.out.println(date1.getDayOfWeek());//返回当前日期的天数是这个周的星期几
                
                  System.out.println(date1.lengthOfMonth());//返回当前日期的月份有多少天
                 
                  System.out.println(date1.lengthOfYear());//返回当前日期的年份有多少天


                    //以 with 的方法的作用是 改变当前的时间的某个字段,并返回副本,所以可以连续的调用
                    //打印  2020-04-18   //  一年中的第几天    //一个月中的第几天   //几月         //几年
                  System.out.println(date2.withDayOfYear(200).withDayOfMonth(18).withMonth(4).withYear(2020));


                  //利用上述方法,可以计算当前日期离今年结束还有多少天,因为没有具体的时间信息,所以暂时只是粗略的计算天数
                  System.out.println("今天离今年结束还有:" + (date1.lengthOfYear() - date1.getDayOfYear()) + "天");


                  //LocalDate转为LocalDateTime的方法
                    //  1 ://以当前日期的开始,创建一个从0点开始的新日期,2018-12-18 0点0分0秒
                    System.out.println(date1.atStartOfDay());
          
               
                    // 2 :指定具体的时间
                  System.out.println(date1.atTime(5,3,2));

                 
                  //判断一个时间是否在另一个时间的后面
                    System.out.println(date1.isAfter(date2));

                    //判断一个时间是否在另一个时间的前面
                    System.out.println(date1.isBefore(date2));

                    //判断一个时间是否与另一个时间相等  (euqals也可以)
                    System.out.println(date1.isEqual(date2));

                  //LocalDate还提供了一些常规算法 : 加 , 减
                    //因为是不可变类且返回值为LocalDate,所以可以连续计算
                	 
                	      //+法
                    System.out.println(date1.plusDays(123).plusMonths(2).plusYears(20));

                       //-法
                    System.out.println(date1.minusDays(123).minusMonths(2).minusYears(20));

                  //最后一个方法, 带年份的日期类,基本都支持,判断是否是闰年
                  System.out.println("今年是否为闰年 : " + date1.isLeapYear());
                }
}

更多的详细知识,可以去查阅官方文档,毕竟是最权威的
java11 java.time包的官方文档

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/time/package-summary.html

这里是是我其他几个简单的测试:
LocalTime:https://blog.csdn.net/qq_42394457/article/details/85086452

LocalDateTime:https://blog.csdn.net/qq_42394457/article/details/85086470

Period:https://blog.csdn.net/qq_42394457/article/details/85086491

MonthDay:https://blog.csdn.net/qq_42394457/article/details/85086483

ZonedDateTime:https://blog.csdn.net/qq_42394457/article/details/85086643

格式化 DateTimeFormatter: https://blog.csdn.net/qq_42394457/article/details/85086717

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值