时间处理是在项目中经常用到的,时间处理一共三个,
new Date().getYear(); 该方式已经弃用,第二种:
calendar,用的最多,但实际用起来并不方便,现在推荐的是第三种:
使用joda包里面的时间处理工具。

使用方式如下:

1 引入maven包

         <dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId></dependency>

2 使用实例如下,重点观察main方法中的调用,直接出结果,与calendar相比,方便很多

import org.joda.time.DateTime;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;public class DateUtil {/*** 获取昨天日期字符串* @param format  格式(例如:yyyy-MM-dd HH:mm:ss)* @return*/public static String getYesterdayStr(String format) {Calendar cal = Calendar.getInstance();cal.add(Calendar.DATE, -1);return new SimpleDateFormat(format).format(cal.getTime());}/*** long 转换成 日期 再转换成String类型* @param dateFormat 日期格式 如 YYYY-MM-dd* @param millSec 毫秒数* @return*/public static String transferLongToDate(String dateFormat, Long millSec) {SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);Date date = new Date(millSec);return sdf.format(date);}public static void main(String[] args) {System.out.println(transferLongToDate("YYYY-MM-dd HH:mm:ss", 1573401600000L));// joda方式System.out.println(new DateTime(1573401600000L).toString("YYYY-MM-dd HH:mm:ss"));System.out.println(getYesterdayStr("YYYY-MM-dd HH:mm:ss"));// joda方式System.out.println(new DateTime().minusDays(1).toString("YYYY-MM-dd HH:mm:ss"));}}

下面介绍5个最常用的date-time类:

Instant - 不可变的类,用来表示时间轴上一个瞬时的点

DateTime - 不可变的类,用来替换JDK的Calendar类

LocalDate - 不可变的类,表示一个本地的日期,而不包含时间部分(没有时区信息)

LocalTime - 不可变的类,表示一个本地的时间,而不包含日期部分(没有时区信息)

LocalDateTime - 不可变的类,表示一个本地的日期-时间(没有时区信息)

不可变的类,表明了正如Java的String类型一样,其对象是不可变的。即,不论对它进行怎样的改变操作,返回的对象都是新对象。

Instant

Instant比较适合用来表示一个事件发生的时间戳。不用去关心它使用的日历系统或者是所在的时区。

该类中使用1970-01-01 00:00:00开始到未来某一刻的的毫秒总数。

初始化

Instant instant = Instant.now();

Instant API

now():获得设置为当前系统毫秒时间的Instant对象。

getMillis():获取瞬间的毫秒数。

minus(long duration):当前时间戳减去duration毫秒数

plus(long duration):当前时间戳加上duration毫秒数

ofEpochMilli(long epochMills):重新设置Instant的毫秒数

parse(String str):输入时间日期字符串,获取对应毫秒数

toDateTime():获取DateTime对象

toInstant():获取Instant对象

代码实例

DateTime

DateTime:用来处理日期时间的类

初始化

DateTime dateTime =new DateTime(); //当前时间

DateTime dateTime =new DateTime(2019,3,11,12,23,11); //设置年月日 时分秒

常用API

获取DateTime 中当前日期的位置

通用格式  AA of BB

例如 hourofDay() 获取当前时间在当前日的第几个小时

这类方法返回的是 Property对象 调用该对象的get()获取对应的值(还有两个方法getMaximumValue()和getMinimumValue()获取对应最大值和最小值)

结果 11

减去/加上DateTime中当前时间

通用格式   minus AA  或者 plus AA

例如 minusDays(int days)  //当前时间减去days天数 或者 plusDays(int days)  //当前时间加上days天数

这类方法返回的是DateTime 对象 ,调用toString(日期格式)输出对应格式的日期时间

结果 2019-03-06 12:23:11

设置DateTime中时间

通用格式   with AA() 用来设置DateTime实例的某个时间。因为DateTime是不可变对象,所以没有提供setter方法可供使用,with方法也没有改变原有的对象,而是返回了设置后的一个副本DateTime对象

例如

withYear(int year) 设置当前时间的年份

结果  2015-10-11 12:23:11

LocalDate LocalTime LocalDateTime 和 DateTime方法类似

还有很多方法没有提到 开发过程根据开发工具的提示的方法名称就能很清楚的知道对应方法的使用方式,

链接:https://www.jianshu.com/p/f8a50f926900

新的时间处理工具joda相关推荐

  1. sqlserver获取前一天的日期_Java8新特性时间日期库DateTime API及示例

    点击上方蓝字关注「程序新视界」 Java8新特性的功能已经更新了不少篇幅了,今天重点讲解时间日期库中DateTime相关处理.同样的,如果你现在依旧在项目中使用传统Date.Calendar和Simp ...

  2. java instant获取微秒转成日期格式_Java8新特性时间日期库DateTime API及示例

    点击上方蓝字关注「程序新视界」 Java8新特性的功能已经更新了不少篇幅了,今天重点讲解时间日期库中DateTime相关处理.同样的,如果你现在依旧在项目中使用传统Date.Calendar和Simp ...

  3. java 8 新特性 时间api使用实例

    2019独角兽企业重金招聘Python工程师标准>>> java 8 提供的 时间api java.time 比原来的Calendar 方便很多.主要提供了 日期类:LocalDat ...

  4. java8为什么用不了_为什么不建议使用Date,而是使用Java8新的时间和日期API?

    Java 8:新的时间和日期API 在Java 8之前,所有关于时间和日期的API都存在各种使用方面的缺陷,因此建议使用新的时间和日期API,分别从旧的时间和日期的API的缺点以及解决方法.Java ...

  5. 做倒计时一天_不知道这6个管理时间的工具,做不好时间管理

    在分享6个时间管理工具之前,我们先来解决一个根本问题: 为什么要做时间管理? 百科给的定义是:时间管理是指通过事先规划和运用一定的技巧.方法与工具实现对时间的灵活以及有效运用,从而实现个人或组织的既定 ...

  6. 15、【 商品管理模块开发】——后台获取商品详情功能开发及PropertiesUtil配置工具,DateTimeUtil时间处理工具开发...

    1.后台获取商品详情接口: 在上一篇文章所新建的ProudctManageController类中新建下面方法: *Controller: //获取商品详情接口@RequestMapping(&quo ...

  7. Java日期及时间库插件 -- Joda Time.

    转载自   Java日期及时间库插件 -- Joda Time. 来到新公司工作也有一个多月了, 陆陆续续做了一些简单的项目. 今天做一个新东西的时候发现了 Joda Time的这个东西, 因为以前用 ...

  8. 账号管理工具_新媒体账号管理工具,自媒体运营神器,管理多个账号很简单

    新媒体账号管理工具,自媒体运营神器,管理多个账号很简单,账号管理一直是自媒体人的一个痛点,尤其是现在大家手上都有很多个账号的情况下,无论是进行内容的分发还是账号管理,如果纯靠手动进行发布,那么将会浪费 ...

  9. java system datetime_Java8新特性时间日期库DateTime API及示例

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

最新文章

  1. 强化学习(七) - 函数近似方法 - 随机梯度下降, 半梯度下降,及瓦片编码(Tile Coding)实例
  2. NPOI读写Excel
  3. python ipaddr_python之IP地址或IP段处理模块-ipaddr
  4. ORA-12154: TNS:could not resolve the connect identifier specified. Solved.
  5. [css] css怎样使每个字符宽度一样?
  6. 『电子书』分享一波码农必备编程开发类书籍[转]
  7. 树:求二叉树的高度和叶子结点数量
  8. OpenShift 4 - Knative教程(2) 基于Revision/Tag/Traffic实现蓝绿部署和恢复发布
  9. HashMap学习之transient
  10. 关于技术的学习及批判
  11. [Vue CLI 3] 配置 webpack-bundle-analyzer 插件
  12. windows 2003 iis php,windows 2003 iis安装php 5.2版本步骤
  13. 华成英-模拟电子技术P13 多级放大器 笔记
  14. 用Retinaface_pytorch项目检测人脸+ Python 3 剪切人脸图片并保存
  15. Code::Blocks安装和汉化包配置
  16. 韩顺平零基础循序渐进学Java——自学笔记
  17. mongoDB存视频和mysql存视频_数据库存储方式:MySQL存储、MONGODB存储、Redis存储、json存储、视频存储、图片存储...
  18. Android_插值器
  19. Arduino与Matlab的串口通讯:通过光敏电阻进行人数统计,以及改进:人物方向的判断并进行加减。
  20. Excel—PAPAYA电脑教室

热门文章

  1. ATTCK v12版本战术介绍持久化(三)
  2. 矢志不渝为安全—清华同方举安全大旗正式杀入云计算市场
  3. Win 10上帝模式 的开启和高级隐藏文件
  4. Excel计算时间差(精确到分钟、秒)
  5. SRM 557 1000
  6. 网络游戏源代码分析_为您的游戏选择正确的网络代码
  7. #442 不叁不肆:独居,阳了,没事,快好了
  8. 如何使用夜神模拟器开发android
  9. Visual Domain Adaptation with Manifold Embedded Distribution Alignment 阅读MEDA
  10. TIPC Cluster5