JAVA8出的新的时间日期API都是线程安全的,并且性能更好,代码更简洁!

LocalDate、LocalTime、LocalDateTime是新API里的基础对象,绝大多数操作都是围绕这几个对象来进行的,有必要搞清楚:
LocalDate : 只含年月日的日期对象
LocalTime :只含时分秒的时间对象
LocalDateTime : 同时含有年月日时分秒的日期对象

获取当前时间

 LocalTime localTime = LocalTime.now();LocalDate localDate = LocalDate.now();LocalDateTime localDateTime = LocalDateTime.now();System.out.println("当前时间:" + localTime);System.out.println("当前日期:" + localDate);System.out.println("当前时间日期:" + localDateTime);

运行结果:

格式化日期

//格式化日期
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String now = localDateTime.format(formatter);
System.out.println("格式化后当前时间日期:" + now);

运行结果:

解析时间

//解析时间
LocalDateTime localDateTime = LocalDateTime.parse("2020-08-08 08:08:08", formatter);
System.out.println("解析后时间:" + localDateTime);

运行结果:

除了基本的格式化,解析时间之外,LocalDateTime还提供了对时间的加减操作

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println("当前时间日期:" + localDateTime.format(formatter));
//增加一个月时间
localDateTime = localDateTime.plusMonths(1);
System.out.println("增加一个月时间后时间:" + localDateTime.format(formatter));
//增加2周时间
localDateTime = localDateTime.plusWeeks(2);
System.out.println("增加2周时间后时间:" + localDateTime.format(formatter));
//减少两天时间
localDateTime = localDateTime.plusDays(-2);
System.out.println("减少2天时间后时间:" + localDateTime.format(formatter));

运行结果:

除了使用plusMonths等方法外,还可以使用plus(long amountToAdd, TemporalUnit unit)方法

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime localDateTime = LocalDateTime.now();System.out.println("当前时间日期:" + localDateTime.format(formatter));//增加一个月时间localDateTime = localDateTime.plus(1, ChronoUnit.MONTHS);System.out.println("增加一个月时间后时间:" + localDateTime.format(formatter));//增加2周时间localDateTime = localDateTime.plus(2, ChronoUnit.WEEKS);System.out.println("增加2周时间后时间:" + localDateTime.format(formatter));//减少两天时间localDateTime = localDateTime.plus(-2, ChronoUnit.DAYS);System.out.println("减少2天时间后时间:" + localDateTime.format(formatter));

运行结果:

JAVA8还提供了计算时间间隔,日期间隔的类

Duration:用于计算两个“时间”间隔
Period:用于计算两个“日期”间隔

 LocalTime localTime1 = LocalTime.now();LocalTime localTime2 = LocalTime.of(18, 36, 33);System.out.println("时间1:" + localTime1);System.out.println("时间2:" + localTime2);Duration duration = Duration.between(localTime1, localTime2);System.out.println("两个时间之间相隔" + duration.toHours() + "小时");System.out.println("两个时间之间相隔" + duration.toMinutes() + "分钟");System.out.println("两个时间之间相隔" + duration.getSeconds() + "秒");

运行结果:

 LocalDate localDate1 = LocalDate.of(2021, 2, 20);LocalDate localDate2 = LocalDate.of(2022, 5, 12);Period period = Period.between(localDate1, localDate2);System.out.println("日期1:" + localDate1);System.out.println("日期2:" + localDate2);System.out.println("两个日期之间相隔" + period.getYears() + "年" + period.getMonths() + "月" + period.getDays() + "日");

运行结果:

另外还提供了是否是闰年的方法

System.out.println("是否为闰年:" + localDate2.isLeapYear());

运行结果:

withDayOfYear(int dayOfYear)可以将日期设置为今年的多少天

LocalDateTime localDateTime3 = LocalDateTime.now();
System.out.println("当前时间日期:" + localDateTime3.format(formatter));
//将当前日期设置为今年的第50天
localDateTime3 = localDateTime3.withDayOfYear(50);
System.out.println("设置后日期:" + localDateTime3.format(formatter));

运行结果:

JDK8新的时间类LocalDateTime,LocalTime,LocalDate使用笔记相关推荐

  1. java8新日期时间类使用

    java8之后提供了新的日期和时间相关类,接口和枚举,放在了java.time包下(之前旧的日期时间类放在java.util包),使设置日期时间更加方便.java8的新日期时间类的设计,借鉴了joda ...

  2. JDK8新特性-Optional类

    个人简介 作者是一个来自河源的大三在校生,以下笔记都是作者自学之路的一些浅薄经验,如有错误请指正,将来会不断的完善笔记,帮助更多的Java爱好者入门. 文章目录 个人简介 JDK8新特性-Option ...

  3. 快速了解JDK8中的新日期时间类

    积土成山,风雨兴焉:积水成渊,蛟龙生焉:积善成德,而神明自得,圣心备焉.故不积跬步,无以至千里,不积小流无以成江海.齐骥一跃,不能十步,驽马十驾,功不在舍.面对悬崖峭壁,一百年也看不出一条裂缝来,但用 ...

  4. 构造一个日期类java_Java8 新日期时间类(1)

    Java.time 包的优势 使用Java8,新的日期时间API引入覆盖旧的日期时间API的以下缺点. 非线程安全 - java.util.Date不是线程安全的,因此开发者必须在使用日期处理并发性问 ...

  5. JDK8的日期时间类1

    localDateTime类 1.分类 将时间分成 localDate类[年月日]] localTime类[时分秒] localDateTime类[年月日时分秒] 2.localDateTime类[常 ...

  6. JDK8的日期时间类2

    1.localDateTime类格式化和解析 概念 (1)格式化:把localDateTime对象转换为String,需通过DateTimeFormatter对象指定格式 (2)解析:把String转 ...

  7. JDK8的日期时间类3

    计算两个时间的间隔 方法:between[静态方法] 1.获取相隔的年月日用Period调用,参数用LocalDate类对象封装的时间 2.获取相隔的天年月日用Duration调用,参数用LocalD ...

  8. JDK8新特性 - Optional类

    引言 Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException).本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空 ...

  9. Java JDK8新特性Optional类

    Optional类 1.该类java.util包下,是不能被继承的泛型类即:public final class Optional<T>. 2.该类有两个私有属性: T value和 静态 ...

最新文章

  1. MPB:华中师大谢波组-​​​微生物非标记定量蛋白质组学样品制备方法
  2. IP地址分类及子网掩码详解
  3. 第二章 DateTime工具类
  4. 蓝桥杯 日志统计 尺取
  5. 【Python练习题】程序5
  6. Java并发-ThreadLocal
  7. QT5_chart_常见几种图形
  8. 【MySQL】MySQL 执行 PROCEDURE ANALYSE 报错 ERROR 1064 (42000)
  9. LeetCode第12题 整数转罗马数字
  10. java架构-Spring MVC 与 Servlet
  11. python 移除列表中的值 list index out of range_重拾Python(二)之列表
  12. 动态路由之OSPF(开放式最短路径优先协议)
  13. 怎么在css中定义字体颜色,css中怎么设置字体颜色
  14. Oracle中文转拼音函数
  15. [python爬虫]爬取英雄联盟所有英雄数据并下载所有英雄皮肤
  16. Python练手项目:计算机自动还原魔方(5)最后一步
  17. 看清接收网络数据包的全过程
  18. 图片情感分析(1):图像数据预处理
  19. 【AI绘画打卡】| 用漫画生成器绘制宅男最爱的二次元美女
  20. linux执行ps命令卡住了,linux ps命令的状态说明

热门文章

  1. Animation动画之alpha
  2. Android 开发者定位调整log缓冲区来解决丢log的问题
  3. 今年考研的几个变化 务必注意!
  4. 卷积码译码:硬判决维特比(Viterbi)译码
  5. 文化使者“字幕组”拥抱BCH
  6. Fortran pgplot安装
  7. 车牌识别SDK,解决多行业全方位方案
  8. btrace使用教程
  9. 冷冻电镜 - ChimeraX Density Map 密度图 操作
  10. MATLAB实现基本的遗传算法(写成函数形式,可调用),优化目标函数,并举例展示