时间项目中的涉及到的时间处理非常多,犹豫SimpleDateFormat的不安全性以及Calendar等类在计算时比较复杂,

往往我们都会使用工具类来封装较多的日期处理函数,

  但是JDK8中新增了操作和日期和时间API,添加了很多常见的api,例如日期/时间比较,加减,格式化等等 方便我们操作时间和日期;

  包所在的位置:java.time

以下是常用的API

  1.LocalDate:日期

  2.LocalTime:时间

  3.LocalDateTime:日期和时间

  4.DateTimeFormater 格式化类

1.以LocalDate为例,代码说明一下具体的API的用法

LocalDate today = LocalDate.now();
System.out.println("今天日期:" + today);
//获取年年,月,日,周几
System.out.println("现在是哪年年:"+today.getYear());
System.out.println("现在是哪⽉月:"+today.getMonth());
System.out.println("现在是哪⽉月(数字):"+today.getMonthValue());
System.out.println("现在是⼏几号:"+today.getDayOfMonth());
System.out.println("现在是周⼏几:"+today.getDayOfWeek());
//加减年年份, 加后返回的对象才是修改后的, 旧的依旧是旧的
LocalDate changeDate = today.plusYears(1);
System.out.println("加后是哪年年:"+changeDate.getYear());
System.out.println("旧的是哪年年:"+today.getYear());
//日期比较
System.out.println("isAfter: "+changeDate.isAfter(today));
//getYear() int 获取当前日期的年年份
//getMonth() Month 获取当前日期的月份对象
//getMonthValue() int 获取当前日期是第几月
//getDayOfWeek() DayOfWeek 表示该对象表示的⽇日期是星期几
//getDayOfMonth() int 表示该对象表示的日期是这个月第几天
//getDayOfYear() int 表示该对象表示的日期是今年年第几天
//withYear(int year) LocalDate 修改当前对象的年年份
//withMonth(int month) LocalDate 修改当前对象的月份
//withDayOfMonth(int dayOfMonth) LocalDate 修改当前对象在当月的日期//plusYears(long yearsToAdd) LocalDate 当前对象增加指定的年年份数
//plusMonths(long monthsToAdd) LocalDate 当前对象增加指定的月份数
//plusWeeks(long weeksToAdd) LocalDate 当前对象增加指定的周数
//plusDays(long daysToAdd) LocalDate 当前对象增加指定的天数
//minusYears(long yearsToSubtract) LocalDate 当前对象减去指定的年的年数//minusMonths(long monthsToSubtract) LocalDate 当前对象减去注定的月数//minusWeeks(long weeksToSubtract) LocalDate 当前对象减去指定的周数//minusDays(long daysToSubtract) LocalDate 当前对象减去指定的天数
//compareTo(ChronoLocalDate other) int 比较当前对象和other对象在时间上的大小,返回值如果为正,则当前时间较晚//isBefore(ChronoLocalDate other) boolean 比较当前对象日期是否在other对象之前//isAfter(ChronoLocalDate other) boolean 比较当前对象日期是否在other对象之后//isEqual(ChronoLocalDate other) boolean 比较两个日期对象是否相等

2.日期时间格式化

  JDK8之前:SimpleDateFormat来进行格式化,但SimpleDateFormat并不不是线程安全的

   JDK8之后:引入线程安全的日期与时间DateTimeFormatter

LocalDateTime ldt = LocalDateTime.now();
System.out.println(ldt);
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String ldtStr = dtf.format(ldt);
System.out.println(ldtStr);

3.获取指定的日期时间对象

LocalDateTime ldt = LocalDateTime.of(2020, 11, 11, 8, 20, 30);
System.out.println(ldt);

4.计算日期时间差java.time.Duration

LocalDateTime today = LocalDateTime.now();
System.out.println(today);
LocalDateTime changeDate = LocalDateTime.of(2020,10,1,10,40,30);
System.out.println(changeDate);
Duration duration = Duration.between( today,changeDate);//第二个参数减第一个参数
System.out.println(duration.toDays());//两个时间差的天数
System.out.println(duration.toHours());//两个时间差的小时数
System.out.println(duration.toMinutes());//两个时间差的分钟数
System.out.println(duration.toMillis());//两个时间差的毫秒数
System.out.println(duration.toNanos());//两个时间差的纳秒数

Java8 LocalDate操作时间和日期的API的更多相关文章

  1. 【JDK8】Java8 LocalDate操作时间和日期的API

    时间项目中的涉及到的时间处理非常多,犹豫SimpleDateFormat的不安全性以及Calendar等类在计算时比较复杂, 往往我们都会使用工具类来封装较多的日期处理函数, 但是JDK8中新增了操作 ...

  2. Java8新特性时间日期库DateTime API及示例

    Java8新特性的功能已经更新了不少篇幅了,今天重点讲解时间日期库中DateTime相关处理.同样的,如果你现在依旧在项目中使用传统Date.Calendar和SimpleDateFormat等API ...

  3. 都9012了,Java8中的日期时间API你还没有掌握?

    一,Java8日期时间API产生的前因后果 1.1 为什么要重新定义一套日期时间API 操作不方便:java中最初的Date不能直接对指定字段进行加减操作也不支持国际化,后来新增了Calendar,但 ...

  4. Java日期时间API系列8-----Jdk8中java.time包中的新的日期时间API类的LocalDate源码分析

    目录 0.前言 1.TemporalAccessor源码 2.Temporal源码 3.TemporalAdjuster源码 4.ChronoLocalDate源码 5.LocalDate源码 6.总 ...

  5. Java日期时间API系列11-----Jdk8中java.time包中的新的日期时间API类,使用java8日期时间API重写农历LunarDate

    通过Java日期时间API系列7-----Jdk8中java.time包中的新的日期时间API类的优点,java8具有很多优点,现在网上查到的农历转换工具类都是基于jdk7及以前的类写的,下面使用ja ...

  6. Java8 ,LocalDate,LocalDateTime处理日期和时间工具类,

    Java8 ,LocalDate,LocalDateTime处理日期和时间工具类 1.获取今天的日期 2.在Java 8 中获取年.月.日信息 3.在Java 8 中处理特定日期 4.在Java 8 ...

  7. 详解Java8特性之新的日期时间 API

    详解Java8特性之新的日期时间 API http://blog.csdn.net/timheath/article/details/71326329 Java8中时间日期库的20个常用使用示例 ht ...

  8. java8新特性七-Date Time API

    Java 8通过发布新的Date-Time API (JSR 310)来进一步加强对日期与时间的处理. 在旧版的 Java 中,日期时间 API 存在诸多问题,其中有: 非线程安全 − java.ut ...

  9. java8新的时间日期库及使用示例

    转自:https://www.cnblogs.com/comeboo/p/5378922.html 来自:Java译站 链接:http://it.deepinmind.com/java/2015/03 ...

随机推荐

  1. ahocorasick使用

    一.作用 字符串匹配,比如现在有个大的列表,客户输入一句话,如何根据客户输入的一句话,从大列表中匹配出字符串交集 具体请详细查阅 二.示例 比如我们有一个wordlist列表,长度很长,包含43430 ...

  2. 【LeetCode】链表 linked list(共34题)

    [2]Add Two Numbers (2018年11月30日,第一次review,ko) 两个链表,代表两个整数的逆序,返回一个链表,代表两个整数相加和的逆序. Example: Input: ( ...

  3. mysql中文乱码解决办法

    Windows 在C:\Program Files\MySQL\MySQL Server 5.5\bin目录下 MySQLInstanceConfig.exe执行 重新配置character_set_ ...

  4. [BZOJ1018][SHOI2008]堵塞的交通traffic 时间分治线段树

    题面 介绍一种比较慢的但是好想的做法. 网上漫天的线段树维护联通性,然后想起来费很大周折也很麻烦.我的做法也是要用线段树的,不过用法完全不同. 这个东西叫做时间分治线段树. 首先我们建一个\(1..m ...

  5. golang对象

    对象和组合 package main import ( "fmt" ) type father struct { name string sex int } type sun st ...

  6. 高手教您编写简单的JSON解析器

    编写JSON解析器是熟悉解析技术的最简单方法之一.格式非常简单.它是递归定义的,所以与解析Brainfuck相比,你会遇到轻微的挑战 ; 你可能已经使用JSON.除了最后一点之外,解析 Scheme的 ...

  7. zookeeper,通过python连接找出其对应的hive

    #通过zookpeer找到对应的hive from kazoo.client import KazooClient zkClient = KazooClient(hosts="ip1:218 ...

  8. checked属性 详解

    注意:当元素中有checked属性时,其值无论是什么,都是被选中状态,那怎么才能让其不被选中呢,就是用jquery或js代码实现 1.html中的checked属性.仔细研究下会发现一个很怪异的现象. ...

  9. 拦截Restful API的三种方式

    如题, 方式有三种. (1). 过滤器filter javaEE规范 (2). 拦截器interceptor springmvc提供 (3). 切片 aspect 一. Filter使用示例 impo ...

  10. webbrowser控件显示word文档

    参照某网站上的步骤(http://www.kuqin.com/office/20070909/968.html)首先,在Visual Studio中创建一个C#语言的Windows应用程序,然后在左侧 ...