Java实用的DateUtils时间工具类介绍
admin
2024-03-08 12:29:17
0

简介: 判断两个时间段是否重叠、上个月的最后一天、构造一个时间段、将单元格数据转换为日期样式的字符串、将单元格数据转换为日期样式的字符串、计算字符型日期天数差

/*** 日期工具类* 

* 使用LocalDateTime存取或判断*

*/ @Component public class DateUtils {/*** 判断两个时间段是否重叠* @param slot1* @param slot2* @return*/public static boolean overlapped(TimeSlot slot1, TimeSlot slot2) {TimeSlot previous, next;previous = slot1.startTime.isBefore(slot2.startTime) ? slot1 : slot2;next = slot2.startTime.isAfter(slot1.startTime) ? slot2 : slot1;// 这里业务需要,允许时间点的重叠// 例如某个时间段的起始时间:2020-06-29 00:00:00// 和另一个时间段的终止时间:2020-06-29 00:00:00// 它们俩可以有交点。如果不需要这种逻辑只把le改成lt// ,ge改成gt就可return !(lt(previous, next) || gt(previous, next));}/*** 上个月的最后一天*/public static String afterMonthLastDay() {Calendar c = Calendar.getInstance();//当前日期设置为指定日期c.setTime(new Date());//指定日期月份减去一c.add(Calendar.MONTH, -1);//指定日期月份减去一后的 最大天数c.set(Calendar.DATE, c.getActualMaximum(Calendar.DATE));//获取上给月最后一天的日期Date lastDateOfPrevMonth = c.getTime();java.text.DateFormat formater = new SimpleDateFormat("yyyy-MM-dd");return formater.format(lastDateOfPrevMonth);}/*** 构造一个时间段* @param startTime* @param endTime* @return*/public static TimeSlot buildSlot(LocalDateTime startTime, LocalDateTime endTime) {return new TimeSlot(startTime, endTime);}/*** less equal* 小于等于* @param prev* @param next* @return*/private static boolean le(TimeSlot prev, TimeSlot next) {return lt(prev, next) || next.endTime.isEqual(prev.startTime);}/*** greater equal* 大于等于* @param prev* @param next* @return*/private static boolean ge(TimeSlot prev, TimeSlot next) {return gt(prev, next) || prev.endTime.isEqual(next.startTime);}/*** greater than* 大于* @param prev* @param next* @return*/private static boolean gt(TimeSlot prev, TimeSlot next) {return prev.endTime.isBefore(next.startTime);}/*** less than* 小于* @param prev* @param next* @return*/private static boolean lt(TimeSlot prev, TimeSlot next) {return next.endTime.isBefore(prev.startTime);}/*** 将单元格数据转换为日期样式的字符串** @param cell* @return*/public static String convertDate(Cell cell) {String value = "";if (cell.getCellType() == CellType.NUMERIC) {if (HSSFDateUtil.isCellDateFormatted(cell)) {//用于转化为日期格式Date d = cell.getDateCellValue();java.text.DateFormat formater = new SimpleDateFormat("yyyy-MM-dd");value = formater.format(d);}}return value;}/*** 将单元格数据转换为日期样式的字符串** @param cell* @return*/public static String convertString(Cell cell) {String value = "";if (cell.getCellType() == CellType.STRING) {value = cell.getStringCellValue();}return value;}/*** 将单元格数据转换为金额样式的字符串* @author:xhmaca* @param cell* @return*/public static String convertBigDecimal(Cell cell) {String value = "";if (cell.getCellType() == CellType.NUMERIC) {if (HSSFDateUtil.isCellDateFormatted(cell)) {} else {BigDecimal bigDecimal = new BigDecimal(cell.getNumericCellValue());value = bigDecimal.toString();}}return value;}/*** 计算字符型日期天数差* @param dateStart* @param dateStop*/public static Integer dateDifferent(String dateStart, String dateStop) {long diff,diffSeconds,diffMinutes,diffHours,diffDays = 0;SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");try {Date d1 = format.parse(dateStart);//毫秒msDate d2 = format.parse(dateStop);//毫秒msdiff = d2.getTime() - d1.getTime();diffSeconds = diff / 1000 % 60;diffMinutes = diff / (60 * 1000) % 60;diffHours = diff / (60 * 60 * 1000) % 24;diffDays = diff / (24 * 60 * 60 * 1000);System.out.print("两个时间相差:");System.out.print(diffDays + "天,");System.out.print(diffHours + "小时,");System.out.print(diffMinutes + "分钟,");System.out.print(diffSeconds + "秒.");} catch (ParseException e) {e.printStackTrace();}int days = (int) diffDays;return days;}/*** 计算字符型日期天数差* @param dateStart* @param dateStop*/public static long datelongDifferent(String dateStart, String dateStop) {long diff,diffSeconds,diffMinutes,diffHours,diffDays = 0;SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");try {Date d1 = format.parse(dateStart);//毫秒msDate d2 = format.parse(dateStop);//毫秒msdiff = d2.getTime() - d1.getTime();diffSeconds = diff / 1000 % 60;diffMinutes = diff / (60 * 1000) % 60;diffHours = diff / (60 * 60 * 1000) % 24;diffDays = diff / (24 * 60 * 60 * 1000);System.out.print("两个时间相差:");System.out.print(diffDays + "天,");System.out.print(diffHours + "小时,");System.out.print(diffMinutes + "分钟,");System.out.print(diffSeconds + "秒.");} catch (ParseException e) {e.printStackTrace();}return diffDays;}/*** 获取当前日期*/public static String getCurrectDate(){SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");Date date = new Date();//当前日期return df.format(date);}/*** 获取当前日期*/public static String getLongFormatDate(String date){SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");return df1.format(date);}/*** 获取当前日期*/public static String getShortFormatDate(String date){SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");return df.format(date);}/*** 计算年份* @param dateStart**/public static Integer getYear(String dateStart) {long diff,diffSeconds,diffMinutes,diffHours,diffDays = 0;SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");try {Date d1 = format.parse(dateStart);//毫秒msreturn d1.getYear()+1900;} catch (ParseException e) {e.printStackTrace();}return 0;}/*** 时间段类*/static class TimeSlot{private LocalDateTime startTime;private LocalDateTime endTime;public TimeSlot(LocalDateTime startTime, LocalDateTime endTime) {if (startTime.isAfter(endTime)) {this.startTime = endTime;this.endTime = startTime;} else {this.startTime = startTime;this.endTime = endTime;}}} }

相关内容

热门资讯

餐饮食材迈入生存竞争时代,华鼎... 【大河财立方 记者 丁洋涛】净利润率跌破3%、闭店率逼近50%、食材采购成本三年累涨22%……当餐饮...
段永平“举牌”泡泡玛特 普通人... 5月28日,泡泡玛特股价经历近一个月的震荡调整后,终于迎来了一次上涨。早盘涨幅一度逼近7%。截至收盘...
格隆汇公告精选︱*ST海利:拟... 【热点】 合锻智能(603011.SH):不涉及AI算力业务 沃格光电(603773.SH):在泛半...
因合规风控流于形式等违规行为,... 来源:滚动播报 (来源:北京商报) 北京商报讯(记者 刘宇阳 实习生 王思奕)5月28日,吉林证监局...
“易中天”股价盘中均创历史新高... 5月28日,A股三大指数集体收涨。截至收盘,沪指报4098.64点,涨0.12%;深证成指报1586...
从受制于人到填补全球空白,深圳... 【大河财立方 记者 王宇】5月28日,主题为“奋进‘十五五’民企勇担当”的国务院新闻办“新征程上的奋...
广州房贷“减负”:多家银行“商... 每经记者|陈荣浩 每经编辑|黄胜 5月26日,广州住房公积金管理中心发布《广州商业性个人住房贷款转...
2026年北京高端家庭服务市场... 引言 步入2026年,北京家庭服务市场正经历从“劳动力密集型”向“专业能力驱动型”的深刻变革。随着高...
亚马逊员工刷AI数据致算力成本... 亚马逊近日关闭了一项内部AI使用量排行榜。此前员工为冲排名、刻意刷高AI调用量,导致公司算力成本激增...
聚势AI向新 深圳加速构建产融... 上证报中国证券网讯(记者 徐潇潇)5月28日,记者在2026年第四届香蜜湖财富管理论坛了解到,本届论...
阿里语音大模型登顶Speech... 【太平洋科技快讯】据报道,在全球权威AI评测平台Artificial Analysis的Speech...
AI产业保险落地,真就利好赛道... 本篇为大家准备了5条要闻,都是近期大家关注度比较高的内容,看完能理清近期的产业和市场动向。一、要闻导...
智象未来CEO:多模态模型To... 【CNMO科技消息】5月28日,据36氪报道,智象未来CEO梅涛称:智象未来做的是全球唯三、能够达到...
原创 人... 国家统计局2026年1月19日交出了一份让人心情复杂的成绩单。2025年全年出生人口792万人,人口...
咽东西总觉得有个坎儿?半个月还... 很多人都有过这样的经历:吃饭时,感觉食物经过胸口某个地方“顿了一下”或“卡了一下”,好像被什么挡住似...
原创 A... A股市场正上演一场冰与火之歌。 一边是通信、电子等科技板块高歌猛进,另一边是消费、金融等传统行业持续...
原创 5... 2026年5月28日,国内黄金价格继续走低,现货黄金跌至每克986元,中国黄金的基础金价报985.7...
抖音生活服务开放日:打造所见即... 5月27日,抖音生活服务举办“2026年服务体验与治理开放日”活动,分享平台在消费者权益保护与体验提...