【日期工具类】DateUtils
[ 常量 ]
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相关推荐
- java dateutils_Java中简单日期工具类DateUtils的实现
最近工作时经常处理日期,想起以前sql server中datediff,dateadd 等方法非常好用,于是想在java中实现类以的功能,而且提高精度,所以初步有了以下代码: package com. ...
- java 日期处理工具类_Java日期处理工具类DateUtils详解
本文实例为大家分享了Java日期处理工具类DateUtils的具体代码,供大家参考,具体内容如下 import java.sql.Timestamp; import java.text.ParseEx ...
- Android经常使用工具类DateUtils(二)
在编写代码中,会经经常使用到时间Date这个类,小编整理了一些经常使用的时间工具类.供大家參考. import java.text.ParseException; import java.text.S ...
- java中常用的日期工具类
java中常用的日期工具类 日期相关的类: package net.yto.ofclacct.core.util;import java.text.ParseException; import jav ...
- java日期工具类(转载)
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...
- java 星期几、得周一、得周日、上周、下周、相差、日期工具类
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. import org.apache.commons.lang3.StringUtils;import ...
- java日期工具类DateUtil
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. DateUtil类 [java] view plain copy package com.util; ...
- 自定义日期工具类 java 1614698552
自定义日期工具类 java 1614698552 需求 思路 演练 日期转字符串的方法 字符串转日期方法 测试类 更多尝试 测试另一个方法
- 天干地支 工具类java_java日期工具类DateUtil-续二
该版本是一次较大的升级,农历相比公历复杂太多(真佩服古人的智慧),虽然有规律,但涉及到的取舍.近似的感念太多,况且本身的概念就已经很多了,我在网上也是查阅了很多的资料,虽然找到一些计算的方法,但都有些 ...
- 8hutool实战:ChineseDate(农历日期工具类)
技术活,该赏 关注+一键三连(点赞,评论,收藏)再看,养成好习惯 hutool实战(带你掌握里面的各种工具)目录 万字博文教你搞懂java源码的日期和时间相关用法 用途:农历日期工具类 使用场景 农历 ...
最新文章
- 更快更强,谷歌提出SWideRNet:全景分割新标杆来啦!
- Stream、WshShell、WshUrlShortcut对象及Shell.Application的参数与使用
- Web前端开发面试题---HTML+CSS
- Http协议的Delete和Put方法是做什么的?怎么用?
- 无需羡慕,今后.NET开发想拿30k也可以毫不费劲!
- audio 上一首 下一首 自定义样式_被 iPhone 吹爆的最香功能,安卓也终于安排上了...
- (计算机组成原理)第一章计算机系统概述-第三节:计算机层次结构
- C语言动态存储分配函数
- 联想 android 5.1 root权限,联想a520一键root权限获取教程(图文)
- SharePoint 已在此服务器场中安装 ID 为 XXXXXXXXX 的功能。请使用强制属性显式地重新安装此功能。解决方法...
- 二次函数计算机课件,《二次函数的应用》课件
- 互联网大数据项目汇报计划书PPT模板
- struct files_struct和struct fdtable
- 词性标注英文简称及分类
- Smart iBat智能乒乓球拍
- 蚂蚁借“链”上位,BAT谁将成数字经济领跑者?
- numpy迭代数组nditer、flat
- redis 8.Redis持久化之RDB (如何触发RDB快照;rdb备份恢复)
- 【学术相关】一般的博士生毕业能进什么样的大学当老师?网友真实回复……...
- 文明旅游深入人心,如何通过视频监控系统进一步加强旅游景区管制?