[ 常量 ]

public static final long MILLIS_PER_SECOND = 1000;public static final long MILLIS_PER_MINUTE = 60 * MILLIS_PER_SECOND;public static final long MILLIS_PER_HOUR = 60 * MILLIS_PER_MINUTE;public static final long MILLIS_PER_DAY = 24 * MILLIS_PER_HOUR;public static final int SEMI_MONTH = 1001;private static final int[][] fields = {{Calendar.MILLISECOND},{Calendar.SECOND},{Calendar.MINUTE},{Calendar.HOUR_OF_DAY, Calendar.HOUR},{Calendar.DATE, Calendar.DAY_OF_MONTH, Calendar.AM_PM/* Calendar.DAY_OF_YEAR, Calendar.DAY_OF_WEEK, Calendar.DAY_OF_WEEK_IN_MONTH */},{Calendar.MONTH, SEMI_MONTH},{Calendar.YEAR},{Calendar.ERA}};public static final int RANGE_WEEK_SUNDAY = 1;public static final int RANGE_WEEK_MONDAY = 2;public static final int RANGE_WEEK_RELATIVE = 3;public static final int RANGE_WEEK_CENTER = 4;public static final int RANGE_MONTH_SUNDAY = 5;public static final int RANGE_MONTH_MONDAY = 6;private enum ModifyType {TRUNCATE,ROUND,CEILING
}

[ 常用方法 ]

参数

// 当前时间
Date date = new Date();
// 时间输出
Consumer<Date> consumer = object -> {String format = DateFormatUtils.format(object, "yyyy-MM-dd HH:mm:ss");System.out.println(format);
};

当前日期指定字段添加多少时间,可以为负数

// 当前日期加1年
DateUtils.addYears(date, 1);
// 当前日期加1个月
DateUtils.addMonths(date, 1);
// 当前日期加1天
DateUtils.addDays(date, 1);
// 当前日期加1个星期
DateUtils.addWeeks(date, 1);
// 当前日期加1小时
DateUtils.addHours(date, 1);
// 当前日期加1分钟
DateUtils.addMinutes(date, 1);
// 当前日期加1秒钟
DateUtils.addSeconds(date, 1);
// 当前日期加1毫秒
DateUtils.addMilliseconds(date, 1);

DateUtils.ceiling(final Date date, final int field)  => 截取日期时间的部分值,截取的末尾部分向上取整

Date ceilYear   = DateUtils.ceiling(date, Calendar.YEAR);
Date ceilMonth  = DateUtils.ceiling(date, Calendar.MONTH);
Date ceilDay    = DateUtils.ceiling(date, Calendar.DAY_OF_MONTH);
Date ceilHour   = DateUtils.ceiling(date, Calendar.HOUR);
Date ceilMinute = DateUtils.ceiling(date, Calendar.MINUTE);
Date ceilSecode = DateUtils.ceiling(date, Calendar.SECOND);consumer.accept(date);//2018-11-23 11:32:12
consumer.accept(ceilYear);//2019-01-01 00:00:00,截取到年,年向上取整(即+1)
consumer.accept(ceilMonth);//2018-12-01 00:00:00,截取到月,月向上取整(即+1);如果是12月的话,月进1变成01,年进1
consumer.accept(ceilDay);//2018-11-24 00:00:00,截取到日,日向上取整(即+1);如果是30(或28/31)的话,日进1变成01,月进1
consumer.accept(ceilHour);//2018-11-23 12:00:00,截取到时,时向上取整(即+1);如果是23点的话,时进1变成00,日进1
consumer.accept(ceilMinute);//2018-11-23 11:33:00,截取到分,分向上取整(即+1);如果是59分的话,分进1变成00,时进1
consumer.accept(ceilSecode);//2018-11-23 11:32:13,截取到分,分向上取整(即+1)

DateUtils.ceiling(final Calendar date, final int field)  => 截取日历的部分值,截取的末尾部分向上取整

Calendar calendar = Calendar.getInstance();
DateUtils.ceiling(calendar, Calendar.YEAR);
// ...

DateUtils.ceiling(final Object date, final int field) => 截取[日期时间 | 日历]的部分值,截取的末尾部分向上取整

DateUtils.ceiling(calendar, Calendar.YEAR);
// ...
// date所指时间是当前月分(年份)的第几天
System.out.println(DateUtils.getFragmentInDays(date, Calendar.YEAR));
DateUtils.getFragmentInDays(calendar, Calendar.YEAR);// date所指时间是当前月分(年份)的第几小时
System.out.println(DateUtils.getFragmentInHours(date, Calendar.YEAR));
System.out.println(DateUtils.getFragmentInHours(calendar, Calendar.YEAR));// date所指时间是当前月分(年份)的第几分钟
System.out.println(DateUtils.getFragmentInMinutes(date, Calendar.YEAR));
System.out.println(DateUtils.getFragmentInMinutes(calendar, Calendar.YEAR));// // date所指时间是当前月分(年份)的第几秒
System.out.println(DateUtils.getFragmentInSeconds(date, Calendar.YEAR));
System.out.println(DateUtils.getFragmentInSeconds(calendar, Calendar.YEAR));// // date所指时间是当前月分(年份)的第几毫秒
System.out.println(DateUtils.getFragmentInMilliseconds(date, Calendar.YEAR));
System.out.println(DateUtils.getFragmentInMilliseconds(calendar, Calendar.YEAR));

设置日期指定字段值

consumer.accept(DateUtils.setYears(date, 2021));
consumer.accept(DateUtils.setMonths(date, 1));
consumer.accept(DateUtils.setDays(date, 1));
consumer.accept(DateUtils.setHours(date, 1));
consumer.accept(DateUtils.setMinutes(date, 1));
consumer.accept(DateUtils.setSeconds(date, 1));
consumer.accept(DateUtils.setMilliseconds(date, 1));

DateUtils.isSameDay => 比较年月日是否相等

DateUtils.isSameDay(date, date);

DateUtils.isSameInstant => 比较时间毫秒数是否相等

DateUtils.isSameInstant(date, date);

DateUtils.isSameDay => 比较日历年月日是否相等

DateUtils.isSameDay(calendar, calendar);

DateUtils.isSameInstant => 比较日历毫秒数是否相等

DateUtils.isSameInstant(calendar, calendar);

DateUtils.isSameLocalTime => 判断是否是同一个本地时间

DateUtils.isSameLocalTime(calendar, calendar);

DateUtils.toCalendar => Date转为Calendar

Calendar calendar1 = DateUtils.toCalendar(date);

DateUtils.toCalendar => Date转为指定时区的Calendar

Calendar calendar2 = DateUtils.toCalendar(date, TimeZone.getTimeZone("Asia/Shanghai"));

DateUtils.round => 截取日期时间的部分值,截取的末尾部分四舍五入,截取部分外的其他部分使用默认初始值(年、月、日、时、分、秒 的默认初始值分别为:0001、01、01、00、00、00)

//Date DateUtils.round(Date date, int field)
Date dateRound = DateUtils.round(date,Calendar.YEAR);

DateUtils.round => 截取日历的部分值,截取的末尾部分四舍五入...

//Date DateUtils.round(Calendar calendar, int field)
Calendar calendarRound = DateUtils.round(calendar, Calendar.YEAR);

DateUtils.round => 截取[日期时间 | 日历]的部分值,截取的末尾部分四舍五入...

//Date DateUtils.round(Object object, int field)
Calendar objectRound = DateUtils.round(calendar, Calendar.YEAR);

DateUtils.truncate(Date date, int field) => 截取日期时间的部分值,截取部分外的其他部分使用默认初始值(年、月、日、时、分、秒 的默认初始值分别为:0001、01、01、00、00、00)

Date truncate = DateUtils.truncate(date, Calendar.YEAR);//截取年,而月、日使用初始值01,时、分、秒使用初始值00
// 其它重载方法
// DateUtils.truncate(Calendar calendar, int field)
// DateUtils.truncate(Object object, int field)

DateUtils.truncatedCompareTo => 两个日期截取相同的部分进行比较。如果 date1更大(更晚)则返回 1,如果 date2 更大(更晚)则返回 -1 ,如果相等,则返回 0。

DateUtils.truncatedCompareTo(date, date, Calendar.YEAR);
DateUtils.truncatedCompareTo(calendar, calendar, Calendar.YEAR);

DateUtils.truncatedEquals => 两个日期截取相同的部分,比较值是否相等。

DateUtils.truncatedEquals(date, date, Calendar.YEAR);
DateUtils.truncatedEquals(calendar, calendar, Calendar.YEAR);

DateUtils.iterator(Date focus, int rangeStyle) => 遍历包含日期 focus 所在的 rangeStyle 范围的连续星期的每一天。

DateUtils.parseDate => 将 String 类型的日期数据转换成 Date 类型的日期数据

// 重载方法Date DateUtils.parseDate(final String str, final Locale locale, final String... parsePatterns)
//该方法中,Locale locale 参数指定语言环境,如果为空,则默认为当前系统的语言环境
try {DateUtils.parseDate("2019-06-15 22:48:52","yyyy-MM-dd HH:mm:ss");// 第二个参数可以有多个,至少一个满足,否则报错DateUtils.parseDate("2019-06-15 22:48:52", ArrayUtils.toArray("yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd"));DateUtils.parseDate("2019-06-15 22:48:52", Locale.CHINESE,"yyyy-MM-dd HH:mm:ss");
} catch (ParseException e) {e.printStackTrace();
}

DateUtils.parseDateStrictly() => 跟parseDate作用相同只是他更严格,例子如下

try {// 比如,下面的代码也可以解析出Date日期,只不过得到的结果变成了“2019-10-30 00:00:00”,并不是正确的结果。Date date2 = DateUtils.parseDate("2019-06-152", "yyyy-MM-dd");consumer.accept(date2);// 而如果像下面这样写的话,会直接报错java.text.ParseException: Unable to parse the date: 2019-06-152。Date date3 = DateUtils.parseDateStrictly("2019-06-152", "yyyy-MM-dd");consumer.accept(date3);
} catch (ParseException e) {e.printStackTrace();
}

【日期工具类】DateUtils相关推荐

  1. java dateutils_Java中简单日期工具类DateUtils的实现

    最近工作时经常处理日期,想起以前sql server中datediff,dateadd 等方法非常好用,于是想在java中实现类以的功能,而且提高精度,所以初步有了以下代码: package com. ...

  2. java 日期处理工具类_Java日期处理工具类DateUtils详解

    本文实例为大家分享了Java日期处理工具类DateUtils的具体代码,供大家参考,具体内容如下 import java.sql.Timestamp; import java.text.ParseEx ...

  3. Android经常使用工具类DateUtils(二)

    在编写代码中,会经经常使用到时间Date这个类,小编整理了一些经常使用的时间工具类.供大家參考. import java.text.ParseException; import java.text.S ...

  4. java中常用的日期工具类

    java中常用的日期工具类 日期相关的类: package net.yto.ofclacct.core.util;import java.text.ParseException; import jav ...

  5. java日期工具类(转载)

    import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...

  6. java 星期几、得周一、得周日、上周、下周、相差、日期工具类

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. import org.apache.commons.lang3.StringUtils;import ...

  7. java日期工具类DateUtil

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. DateUtil类 [java] view plain copy package com.util; ...

  8. 自定义日期工具类 java 1614698552

    自定义日期工具类 java 1614698552 需求 思路 演练 日期转字符串的方法 字符串转日期方法 测试类 更多尝试 测试另一个方法

  9. 天干地支 工具类java_java日期工具类DateUtil-续二

    该版本是一次较大的升级,农历相比公历复杂太多(真佩服古人的智慧),虽然有规律,但涉及到的取舍.近似的感念太多,况且本身的概念就已经很多了,我在网上也是查阅了很多的资料,虽然找到一些计算的方法,但都有些 ...

  10. 8hutool实战:ChineseDate(农历日期工具类)

    技术活,该赏 关注+一键三连(点赞,评论,收藏)再看,养成好习惯 hutool实战(带你掌握里面的各种工具)目录 万字博文教你搞懂java源码的日期和时间相关用法 用途:农历日期工具类 使用场景 农历 ...

最新文章

  1. 更快更强,谷歌提出SWideRNet:全景分割新标杆来啦!
  2. Stream、WshShell、WshUrlShortcut对象及Shell.Application的参数与使用
  3. Web前端开发面试题---HTML+CSS
  4. Http协议的Delete和Put方法是做什么的?怎么用?
  5. 无需羡慕,今后.NET开发想拿30k也可以毫不费劲!
  6. audio 上一首 下一首 自定义样式_被 iPhone 吹爆的最香功能,安卓也终于安排上了...
  7. (计算机组成原理)第一章计算机系统概述-第三节:计算机层次结构
  8. C语言动态存储分配函数
  9. 联想 android 5.1 root权限,联想a520一键root权限获取教程(图文)
  10. SharePoint 已在此服务器场中安装 ID 为 XXXXXXXXX 的功能。请使用强制属性显式地重新安装此功能。解决方法...
  11. 二次函数计算机课件,《二次函数的应用》课件
  12. 互联网大数据项目汇报计划书PPT模板
  13. struct files_struct和struct fdtable
  14. 词性标注英文简称及分类
  15. Smart iBat智能乒乓球拍
  16. 蚂蚁借“链”上位,BAT谁将成数字经济领跑者?
  17. numpy迭代数组nditer、flat
  18. redis 8.Redis持久化之RDB (如何触发RDB快照;rdb备份恢复)
  19. 【学术相关】一般的博士生毕业能进什么样的大学当老师?网友真实回复……...
  20. 文明旅游深入人心,如何通过视频监控系统进一步加强旅游景区管制?

热门文章

  1. svn 删除文件 上传文件
  2. matlab IIR滤波
  3. JDK下载与安装教程(最简单版)
  4. Win10网络图标消失,网络图标变成灰色,打开网络设置闪退等问题解决
  5. EDA技术实用教程 | 复习九 | 数据选择器的行为级描述
  6. 【Java就业培训教程】——String类的学习
  7. Ubuntu命令技巧
  8. 【MFC教程】MFC窗口创建
  9. 基于P2P终结者的ARP攻击实践(截取数据获取上网账号密码)
  10. java swing获得焦点_Java Swing TextArea 滚动条并获取焦点