前言:由于之前想要用Java实现日历的打印以及找到相应的寻找休息日,所以在这方面寻找相应的资料并进行总结归纳
Java中1.8之前有date类和calendar类。其中date类到了1.8大部分的方法被弃用了说明这些方法都有很大的缺陷,而且date类如果不格式化可读性十分差,所以就需要格式化,而格式化使用simpledateformat来进行操作线程不安全。而calendar类是一个共享变量,而且没有做线程不安全,当多个线程同时使用simpledateformat调用format方法时,多个线程会同时调用calendar.setTime方法,而导致的后果时time值一直被修改从而返回的格式化的时间是错误的。而且simpledateformat方法中format和parse方法都是线程不安全的。
Java1.8之后出现了localdate,localdatetime,localtime这些类,而这些类使用了final来修饰,使得这些类是不可变的,一旦实例化,值就固定了,有点类似于String类,所以这些类都是线程安全的。
localdate是针对于年月日的,localtime是针对于时分秒,localdatetime是针对于年月日时分秒
Localdate创建方法

//获取当前时间
LocalDate localDate = LocalDate.now();
//输入年月日设置时间
LocalDate localDate = LocalDate.of(year,month,day);

获取年月日星期几

int year = localDate.getYear();
int year = localDate.get(ChronoField.YEAR);
//注意getMonth方法返回的是Month类,可通过getValue方法获得一个long类型的值,然后可以强转为int类型进行使用
Month month = localDate.getMonth();
int month1 = localDate.get(ChronoField.MONTH_OF_YEAR);
int day = localDate.getDayOfMonth();
int day1 = localDate.get(ChronoField.DAY_OF_MONTH);
//注意getDayOfWeek方法返回的是DayOfWeek类,可通过getValue方法获得一个long类型的值,然后可以强转为int类型进行使用
DayOfWeek dayOfWeek = localDate.getDayOfWeek();
int dayOfWeek1 = localDate.get(ChronoField.DAY_OF_WEEK);

进行加减日期

LocalDate localDate = LocalDate.now();
//增加一年
localDate = localDate.plusYears(1);
localDate = localDate.plus(1, ChronoUnit.YEARS);
//减少一个月
localDate = localDate.minusMonths(1);
localDate = localDate.minus(1, ChronoUnit.MONTHS);
//减少一日
localDate = localDate.minusDays(1);
localDate = localDate.minus(1, ChronoUnit.DAYS);
//通过使用with方法进行修改
//修改年为2020
localDate = localDate.withYear(2020);
//修改为2020
localDate = localDate.with(ChronoField.YEAR, 2020);

LocalTime相类似就是把年月日换成时分秒就可以了
创建LocalDateTime可以使用LocalDateTime.of(locaDate,localTime),LocalDate.atTime(localTime),LocalTime.atDate(localDate)来进行创建
LocalDateTime获取LocalDate和LocalTime的方法如下

//获取LocalDate
LocalDate localDate = localDateTime.toLocalDate();
//获取LocalTime
LocalTime localTime = localDateTime.toLocalTime();

Instant
Instant类是1.8之后新增的,与1.8之前的Date类有点相似
Instant的创建方法

Instant instant = Instant.now();
//l为1970年1月1日至所记录时间的的毫秒数
Instant instant1 = Instant.ofEpochMilli(l);

设置时区偏移量

// 按时区设置偏移量
OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8));// 设置偏移量为8

获取秒数

long currentSecond = instant.getEpochSecond();

获取毫秒数
获取1970年1月1日至所记录时间的的毫秒数,类似于Date类中的getTime方法。

//获取毫秒数
long l = instant.toEpochMilli();

对于LocalDate,LocalTime,LocalDateTime,Instant类进行格式化需要使用DateTimeFormatter类

//String转换成日期类型
//String类型转换成LocalDate类型
LocalDate localDate = LocalDate.parse("2019-12-07");
//String类型转换为LocalTime类型
LocalTime localTime = LocalTime.parse("17:26:00");
//String类型转换为LocalDateTime类型
//按照12小时计算
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
//按照24小时计算
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDate localDate = LocalDate.parse("2019-12-07 07:43:53",formatter);
//日期类型转换成String类型
//localDate转换成String
LocalDate localDate = LocalDate.now();
//按照yyyyMMdd样式进行更改
String format = localDate.format(DateTimeFormatter.BASIC_ISO_DATE);
//按照yyyy-MM-dd样式进行更改
String format = localDate.format(DateTimeFormatter.ISO_DATE);
//自定义样式进行更改
DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
String format = localDate.format(pattern);
//LocalTime类型转换为String类型
//按照xx:xx:xx.xx样式进行转换
LocalTime localTime = LocalTime.now();
String format3 = localTime.format(DateTimeFormatter.ISO_TIME);
//按照自定义样式进行转换
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("hh:mm:ss");
String format4 = localTime.format(formatter);
//LocalDateTime类型转换为String类型
LocalDateTime localDateTime = LocalDateTime.now();
DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
String format5 = localDateTime.format(formatter2);

LocalDate方法使用总结相关推荐

  1. java 泛型--桥方法

    因为 java 在编译源码时, 会进行 类型擦除, 导致泛型类型被替换限定类型(无限定类型就使用 Object). 因此为保持继承和重载的多态特性, 编译器会生成 桥方法. 本文最后附录所有源码. P ...

  2. java桥_java 泛型--桥方法

    因为 java 在编译源码时, 会进行 类型擦除, 导致泛型类型被替换限定类型(无限定类型就使用 Object). 因此为保持继承和重载的多态特性, 编译器会生成 桥方法. 本文最后附录所有源码. P ...

  3. Java8 Date API 详解 - LocalDate,LocalDateTime,Instant

    转载来源:https://www.journaldev.com/2800/java-8-date-localdate-localdatetime-instant Java8 Date API 详解 - ...

  4. Java 8日期– LocalDate,LocalDateTime,即时

    Java 8 Date Time API is one of the most sought after change for developers. Java has been missing a ...

  5. 根据LocalDate或者DateUtils计算两个日期之间的天数差

    1.LocalDate方法 实际应用: //将date日期类型转化为LocalDate数据类型, result.getCreateTime()为date参数 LocalDate startDate = ...

  6. java localdate_Java日期LocalDate使用

    在做报表统计时,需要对指定时间内的数据做统计,则需要使用到时间日期API 在此使用的是java.util.Date的完美私生子LocalDate类 LocalDate方法介绍 now() : 从默认时 ...

  7. date日期相减 java_03时间日期类

    Java8 在 java.time 包中增加了时间日期相关的API,弥补了 Java8 以前对日期.时间处理的不足. 在介绍Java8新的时间日期API前,先看看 java8 以前我们操作日期时间常用 ...

  8. java怎样控制迭代周期_如何在Java中迭代日期范围?

    好吧,你可以使用Java 8的time-API做这样的事情,特别是这个问题java.time.LocalDate(或Java 7及更早版本的等效Joda Time类) for (LocalDate d ...

  9. 《Java核心技术》学习笔记——第8章 泛型程序设计

    版权声明:本文为博主ExcelMann的原创文章,未经博主允许不得转载. 第8章 泛型程序设计 作者:ExcelMann,转载需注明. 第8章内容目录: 为什么要使用泛型程序设计 定义简单泛型类 泛型 ...

最新文章

  1. windows下python2.7.14版本的安装
  2. Git:如何在项目提交历史中查找已删除的文件?
  3. java throwable用法_java – ExceptionHandler不能与Throwable一起使用
  4. 安装VISTA我们应该选择哪种
  5. 腾讯人均月薪8万!第一季度财报发布:微信月活数恐怖,游戏平均日赚4亿
  6. VB.Command()的参数
  7. Python稳基修炼的经典案例6(计算机二级、初学者必须掌握的例题)
  8. 安装conntrack-tools
  9. Windows7系统的70个小技巧
  10. 毕业即失业,转行软件测试的辛酸泪只有自己知道
  11. linux画国旗程序,C语言也能画国旗
  12. 元宵节大家来猜灯谜,祝元宵节快乐!
  13. 精尽Spring Boot源码分析 - 内嵌Tomcat容器的实现
  14. 基于Byte Buddy的探针开发实践
  15. 温度换算(C/C++/Java)
  16. 蒙版操作—图层混合颜色换天空背景
  17. 基于omi的omim-tag组件
  18. excel怎么一个格子斜分_『在Excel中,把一个格子用线分成三个怎么弄啊』一个单元格怎么斜分两个...
  19. 功能点(FP)分析详细解释
  20. [小白系列]利用echarts或者pyecharts来实现高端大气上档次的可视化

热门文章

  1. RBA验厂咨询,企业下订单之前会自己或者委托第三方公证行检查工厂状况
  2. python里的英文歌_python下载酷狗音乐上的歌曲
  3. mysql语句错误无法退出
  4. 第 4 章 文件管理
  5. IM即时通讯-2-如何做技术方案设计
  6. html页面如何写循环,jquery怎么写循环?
  7. 吉林大学计算机学院平均绩点,关于实行吉林大学本科生课程学分绩点的说明
  8. JavaWeb1-3学习总结(BootStrap,xml,tomcat,servlet)
  9. 美版三星s7 g930 p版刷官方国际版安卓8以及手机卡信号和关闭DM服务相关问题
  10. python导入twisted模块_Python twisted ImportError:无法导入名称unicod