Java日期工具类DateUtils详解(转)
jar包 appache下的 common-lang3
一、 对指定的日期新增年、月、周、日、小时、分钟、秒、毫秒
public static Date addDays(Date date, int amount)
Date date = new Date();
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss"));
date = DateUtils.addDays(date, 1);
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss"));
结果是:
2018-01-23 11:53:49
2018-01-24 11:53:49这里写代码片
说明:向返回新对象日期添加若干天,原始日期不变;
参数:date-日期,可能为空;amount-添加的量可能为复值;
返回值:返回一个新日期,原始日期不变;
抛出异常:IllegalArgumentException,如果日期为null;
public static Date addHours(Date date, int amount)
Date date = new Date();
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss"));
date = DateUtils.addHours(date, 1);
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss"));
结果:
2018-01-23 11:58:26
2018-01-23 12:58:26
说明:向新返回日期对象添加若干小时,原始日期不变;
参数:date-日期,可能为空;amount-添加的量可能为复值;
返回值:返回一个新日期,原始日期不变;
抛出异常:IllegalArgumentException,如果日期为null;
public static Date addMinutes(Date date, int amount)
Date date = new Date();
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss"));
date = DateUtils.addMinutes(date, 1);
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss"));
结果:
2018-01-23 13:04:05
2018-01-23 13:05:05
说明:向新返回日期对象添加若干分钟,原始日期不变;
参数:date-日期,可能为空;amount-添加的量可能为复值;
返回值:返回一个新日期,原始日期不变;
抛出异常:IllegalArgumentException,如果日期为null;
public static Date addSeconds(Date date, int amount)
Date date = new Date();
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss"));
date = DateUtils.addSeconds(date, 1);
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss"));
结果:
2018-01-23 13:06:42
2018-01-23 13:06:43
说明:向新返回日期对象添加若干秒,原始日期不变;
参数:date-日期,可能为空;amount-添加的量可能为复值;
返回值:返回一个新日期,原始日期不变;
抛出异常:IllegalArgumentException,如果日期为null;
public static Date addMilliseconds(Date date, int amount)
Date date = new Date();
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
date = DateUtils.addMilliseconds(date, 1);
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
结果:
2018-01-23 13:10:26:579
2018-01-23 13:10:26:580
说明:向新返回日期对象添加若干毫秒,原始日期不变;
参数:date-日期,可能为空;amount-添加的量可能为复值;
返回值:返回一个新日期,原始日期不变;
抛出异常:IllegalArgumentException,如果日期为null;
public static Date addYears(Date date, int amount)
Date date = new Date();
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
date = DateUtils.addYears(date, 1);
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
结果:
2018-01-23 13:12:44:742
2019-01-23 13:12:44:742
说明:向新返回日期对象添加若干年,原始日期不变;
参数:date-日期,可能为空;amount-添加的量可能为复值;
返回值:返回一个新日期,原始日期不变;
抛出异常:IllegalArgumentException,如果日期为null;
public static Date addMonths(Date date, int amount)
Date date = new Date();
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
date = DateUtils.addMonths(date, 1);
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
结果:
2018-01-23 13:14:13:354
2018-02-23 13:14:13:354
说明:向新返回日期对象添加若干年,原始日期不变;
参数:date-日期,可能为空;amount-添加的量可能为复值;
返回值:返回一个新日期,原始日期不变;
抛出异常:IllegalArgumentException,如果日期为null;
public static Date addWeeks(Date date, int amount)
Date date = new Date();
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
date = DateUtils.addWeeks(date, 1);
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
结果:
2018-01-23 13:15:21:608
2018-01-30 13:15:21:608
说明:向新返回日期对象添加若干周,原始日期不变;
参数:date-日期,可能为空;amount-添加的量可能为复值;
返回值:返回一个新日期,原始日期不变;
抛出异常:IllegalArgumentException,如果日期为null;
二、设置日期中年、月、日、时、分、秒、毫秒值为指定的数字值
public static Date setYears(Date date,int amount)
Date date = new Date();
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
date = DateUtils.setYears(date, 2015);
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
结果:
2018-01-23 13:24:13:838
2015-01-23 13:24:13:838
说明:设置日期中年字段并返回一个新的日期对象,原始日期值不变;
参数:date-日期,不能为null;amount-设置的值,非负值;
返回:一个新的日期对象;
抛出异常:IllegalArgumentException,如果日期为null或者负值;
public static Date setMonths(Date date, int amount)
Date date = new Date();
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
date = DateUtils.setMonths(date, 11);
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
结果:
2018-01-23 13:30:28:161
2018-12-23 13:30:28:161
说明:设置日期中月字段并返回一个新的日期对象,原始日期值不变;
参数:date-日期,不能为null;amount-设置的值,非负值,且值为0—11;
返回:一个新的日期对象;
抛出异常:IllegalArgumentException,如果日期为null或者负值;
public static Date setDays(Date date, int amount)
Date date = new Date();
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
date = DateUtils.setDays(date, 11);
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
结果:
2018-01-23 13:33:41:587
2018-01-11 13:33:41:587
说明:设置日期中日字段并返回一个新的日期对象,原始日期值不变;
参数:date-日期,不能为null;amount-设置的值,非负值,且值为0到当月最大天数;
返回:一个新的日期对象;
抛出异常:IllegalArgumentException,如果日期为null或者负值;
public static Date setHours(Date date, int amount)
Date date = new Date();
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
date = DateUtils.setHours(date, 16);
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
结果:
2018-01-23 13:36:01:860
2018-01-23 16:36:01:860
说明:设置日期中小时字段并返回一个新的日期对象,原始日期值不变;
参数:date-日期,不能为null;amount-设置的值,非负值,且值为0到23;
返回:一个新的日期对象;
抛出异常:IllegalArgumentException,如果日期为null或者负值;
public static Date setMinutes(Date date, int amount)
Date date = new Date();
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
date = DateUtils.setMinutes(date, 16);
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
结果:
2018-01-23 13:37:28:681
2018-01-23 13:16:28:681
说明:设置日期中分钟字段并返回一个新的日期对象,原始日期值不变;
参数:date-日期,不能为null;amount-设置的值,非负值,且值为0到59;
返回:一个新的日期对象;
抛出异常:IllegalArgumentException,如果日期为null或者负值;
public static Date setSeconds(Date date, int amount)
Date date = new Date();
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
date = DateUtils.setSeconds(date, 10);
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
结果:
2018-01-23 13:39:19:946
2018-01-23 13:39:10:946
说明:设置日期中秒字段并返回一个新的日期对象,原始日期值不变;
参数:date-日期,不能为null;amount-设置的值,非负值,且值为0到59;
返回:一个新的日期对象;
抛出异常:IllegalArgumentException,如果日期为null或者负值;
public static Date setMilliseconds(Date date, int amount)
Date date = new Date();
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
date = DateUtils.setMilliseconds(date, 10);
System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
结果:
2018-01-23 13:40:38:666
2018-01-23 13:40:38:010
说明:设置日期中毫秒字段并返回一个新的日期对象,原始日期值不变;
参数:date-日期,不能为null;amount-设置的值,非负值,且值为0到999;
返回:一个新的日期对象;
抛出异常:IllegalArgumentException,如果日期为null或者负值;
三、检查日期是否相同
public static boolean isSameDay(Date date1, Date date2)
Date date1 = new Date();
Date date2 = new Date();
System.out.println(DateUtils.isSameDay(date1, date2));
结果:
true
说明:检查两个日期对象是否同一天忽略时间(28 Mar 2002 13:45 and 28 Mar 2002 06:01 would return true. 28 Mar 2002 13:45 and 12 Mar 2002 13:45 would return false.);
参数:date1-第一个参数,不能改变,非空;date2-第二个参数,不能改变,非空;
返回值:true,如果两个日期在同一天;
抛出异常:IllegalArgumentException如果有一个日期为null;
public static boolean isSameDay(Calendar cal1, Calendar cal2)
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
System.out.println(DateUtils.isSameDay(cal1, cal2));
结果:
true
说明:检查两个日期对象是否同一天忽略时间(28 Mar 2002 13:45 and 28 Mar 2002 06:01 would return true. 28 Mar 2002 13:45 and 12 Mar 2002 13:45 would return false);
参数:date1-第一个参数,不能改变,非空;date2-第二个参数,不能改变,非空;
返回值:true,如果两个日期在同一天;
抛出异常:IllegalArgumentException如果有一个日期为null;
public static boolean isSameInstant(Date date1, Date date2)
Date date1 = new Date();
date1 = DateUtils.addMinutes(date1, 23);
Date date2 = new Date();
System.out.println(DateUtils.isSameInstant(date1, date2));
结果:
false
说明:检查两个日期对象是否代表同一时刻,此方法比较两个日期精确到毫秒数;
参数:date1-第一个参数,不能改变,非空;date2-第二个参数,不能改变,非空;
返回值:true,如果两个日期代表相同的毫秒时刻;
抛出异常:IllegalArgumentException如果有一个日期为null;
public static boolean isSameInstant(Calendar cal1, Calendar cal2)
Calendar cal1 = Calendar.getInstance();
Date date3 = DateUtils.addHours(cal1.getTime(), 12);
cal1.setTime(date3);
Calendar cal2 = Calendar.getInstance();
System.out.println(DateUtils.isSameInstant(cal1, cal2));
结果:
false
说明:检查两个日期对象是否代表同一时刻,此方法比较两个日期精确到毫秒数;
参数:date1-第一个参数,不能改变,非空;date2-第二个参数,不能改变,非空;
返回值:true,如果两个日期代表相同的毫秒时刻;
抛出异常:IllegalArgumentException如果有一个日期为null;
public static boolean isSameLocalTime(Calendar cal1,Calendar cal2)
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
System.out.println(DateUtils.isSameLocalTime(cal1, cal2));
结果:
true
说明:检查两个日历对象是否表示相同的本地时间,此方法比较两个对象的字段值,另外两个日历必须为同一类型的日历;
参数:cal1-第一个参数,不能改变,非空;cal2-第二个参数,不能改变,非空;
返回值:true,如果两个日期代表相同的毫秒时刻;
抛出异常:IllegalArgumentException如果有一个日期为null;
一、日期格式化
public static Date parseDate(String str, Locale locale,String… parsePatterns)
说明:使用给定区域设置的默认日期格式符号,通过尝试各种不同的解析器解析一个表示日期的字符串,解析将依次尝试每个解析模式。解析只有在解析整个输入字符串时才被认为是成功的。如果没有解析模式匹配,抛出ParseException抛出,解析器将对已解析的日期冗余;
参数:str-转换的日期,非null;parsePatterns-要使用的日期格式模式,查看SimpleDateFormat,非null;local-应该使用日期格式符号的区域设置。如果为空,系统现场应用(每parsedate(String,String…))。
返回数据:转换后的日期对象;
抛出异常:IllegalArgumentException-如果data字符串或者parsePatterns模式为null;ParseException-如果没有日期格式符合data字符串;
DateUtils.parseDate("2017-12-16 15:26:56",Locale.CHINA, "yyyy-MM-dd HH:mm:ss")
Sat Dec 16 15:26:56 CST 2017
public static Date parseDate(String str, String… parsePatterns)
说明:通过尝试各种不同的解析器解析一个表示日期的字符串,解析将依次尝试每个解析模式。解析只有在解析整个输入字符串时才被认为是成功的。如果没有解析模式匹配,抛出ParseException抛出。
参数:str-转换的日期,非null;parsePatterns-要使用的日期格式模式,查看SimpleDateFormat,非null;
返回数据:转换后的日期对象;
抛出异常:IllegalArgumentException-如果data字符串或者parsePatterns模式为null;ParseException-如果没有日期格式符合data字符串;
DateUtils.parseDate("2017-12-16 15:26:56", "yyyy-MM-dd HH:mm:ss")
Sat Dec 16 15:26:56 CST 2017
public static Date parseDateStrictly(String str, String… parsePatterns)
说明:通过尝试各种不同的解析器解析一个表示日期的字符串,解析将依次尝试每个解析模式,解析只有在解析完整个输入字符串的时候才会被认为成功,如果没有解析模式匹配,将会抛出异常;解析器严格解析,它不允许诸如"February 942, 1996";
参数:str-输入的日期字符串,非null;parsePatterns-日期转换的格式,非null;
返回值:转换后的日期对象;
抛出异常:IllegalArgumentException-如果data字符串或者parsePatterns模式为null;ParseException-如果没有日期格式符合data字符串;
二、日期舍入
public static Date round(Date date, int field)
说明:舍入日期,保留大于等于指定字段的日期;例如如果你有日期28 Mar 2002 13:45:01.231,如果传入HOUR,那结果会是28 Mar 2002 14:00:00.000;如果传入的是MONTH,将会返回1 April 2002 0:00:00.000;
参数:date-转换日期;field-舍入字段,如:Calendar.DATE、Calendar.MINUTE;
返回值:不同的舍入日期,非null;
————————————————
版权声明:本文为CSDN博主「随风yy」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yaomingyang/article/details/79138466
Java日期工具类DateUtils详解(转)的更多相关文章
- java 日期工具类DateUtils
日期工具类DateUtils CreateTime--2017年5月27日08:48:00Author:Marydon DateUtils.java-对日期类的进一步封装 import java. ...
- Java日期工具类,Java时间工具类,Java时间格式化
Java日期工具类,Java时间工具类,Java时间格式化 >>>>>>>>>>>>>>>>>&g ...
- java日期工具类DateUtil-续一
上篇文章中,我为大家分享了下DateUtil第一版源码,但就如同文章中所说,我发现了还存在不完善的地方,所以我又做了优化和扩展. 更新日志: 1.修正当字符串日期风格为MM-dd或yyyy-MM时,若 ...
- java日期工具类DateUtil-续二
该版本是一次较大的升级,农历相比公历复杂太多(真佩服古人的智慧),虽然有规律,但涉及到的取舍.近似的感念太多,况且本身的概念就已经很多了,我在网上也是查阅了很多的资料,虽然找到一些计算的方法,但都有些 ...
- java日期工具类DateUtil
一名优秀的程序员,不仅需要有着丰富解决问题的方案,还需要的便是代码的沉淀,这不仅有助于自己快速的开发程序,也有利于保证程序的健壮.那如何才能沉淀自己的”代码“呢?从自己编写util开始其实就是一个不错 ...
- 日期工具类 DateUtils(继承org.apache.commons.lang.time.DateUtils类)
/** * */ package com.dsj.gdbd.utils.web; import org.apache.commons.lang3.time.DateFormatUtils; impor ...
- JAVA 日期工具类的总结
一般,在项目中,我们会会经常使用到日期的各种方式的处理,在各个业务逻辑操作中,都需要相关的日期操作,因此,实现项目中的日期工具类的提出,还是十分重要的,下面,就项目中常用到的日期的相关操作方式,做了一 ...
- Java 日期工具类(日期,月份加减等)--转
package util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.C ...
- java 日期工具类
import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; imp ...
随机推荐
- [LuoguP2143]巨额资金_Kruskal_Matrix-Tree定理
巨额资金 题目链接:https://www.luogu.org/problem/P2143 数据范围:略. 题解: 有一个条件是每种权值的边最多是$10$条. 但是并不知道怎么用.... 不过有一点我 ...
- AMD全新32核线程撕裂者GeekBench跑分曝光:超2950X近一倍
AMD全新32核线程撕裂者GeekBench跑分曝光:超2950X近一倍 2019年09月01日 09:36 1109 次阅读 稿源:快科技 1 条评论 https://www.cnbeta.com/ ...
- Win7 Eclipse 搭建spark java1.8环境:WordCount helloworld例子
[学习笔记] Win7 Eclipse 搭建spark java1.8环境:WordCount helloworld例子在eclipse oxygen上创建一个普通的java项目,然后把spark-a ...
- Ubuntu18.04中安装Python3.7教程
Ubuntu18.04中安装Python3.7教程 链接https://blog.csdn.net/weixin_42056625/article/details/82970358
- poj 2342 【Anniversary party】树形dp
题目传送门//res tp poj 题意 给出一棵有权树,求一个节点集的权值和,满足集合内的任意两点不存在边 分析 每个点有选中与不选中两种状态,对于第\(i\)个点,记选中为\(sel_i\),不选 ...
- Photon Server初识(五) --- 客户端连接服务端
准备:Unity开开发IDE. 一.新建Unity3D项目 导入包,在资源下新建目录 Plugins .在之前解压的SDK目录 lib中找到 Photon3Unity3D.dll,拖到新建的目前下 二 ...
- python — 协程
1. 协程 1.1 协程基础 1.协程 :能够在一个线程下的多个任务之间来回切换,那么每一个任务都是一个协程. 2.协程的优点: 1.一个线程中的阻塞都被其他的各种任务沾满了 2.让操作系统觉得这个线 ...
- JAVA中线程到底起到什么作用!
这是javaeye上非常经典的关于线程的帖子,写的非常通俗易懂的,适合任何读计算机的同学. 线程同步 我们可以在计算机上运行各种计算机软件程序.每一个运行的程序可能包括多个独立运行的线程(Thread ...
- MySQL - 性能优化 & MySQL常见SQL错误用法(转载)
1. LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方.比如: , ; 一般DBA想到的办法是在type, name, create_time字段上加组合索引.这样条件排序 ...
- [Tarjan系列] Tarjan算法求无向图的双连通分量
这篇介绍如何用Tarjan算法求Double Connected Component,即双连通分量. 双联通分量包括点双连通分量v-DCC和边连通分量e-DCC. 若一张无向连通图不存在割点,则称它为 ...