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;}}} }

相关内容

热门资讯

先导极星完成5000万元天使轮... 瑞财经 王敏 近日,据国元基金管理公司官微消息,安徽先导极星科技有限公司(以下简称“先导极星”)完成...
2025年大商所商品期货期权总... 上证报中国证券网讯(记者 韩远飞)3月2日,记者从大商所获悉,2025年,大商所保持稳中向好发展态势...
飙涨!国际油价,会突破100美... 北京时间3月2日国际油价大幅上涨。据Wind数据,布伦特原油价格一度上涨13%,突破每桶82美元;W...
白癜风医生郑华国:白癜风与维生... 维生素E是一种脂溶性维生素,具有强大的抗氧化和保湿作用,是皮肤健康的重要营养素,对白癜风患者而言,适...
开年已有2家上市公司主动退市,... 资本市场主动退市的案例在持续增加。开年以来,已有包括德邦股份(603056.SH)、瓦轴B(2007...
伊朗局势加剧欧美金融市场动荡 ... 新华社北京3月2日电 受美以袭击伊朗影响,欧洲金融市场避险情绪明显升温,2日欧洲天然气价格盘中暴涨超...
支付宝买黄金可靠吗?年轻人正在... “钱没有消失,只是变成了我喜欢的样子。” “工资会跳水,感情会跑路,只有黄金长期稳稳增长。” “铁饭...
【机构策略】预计本次中东冲突仅... 财信证券认为,中东冲突升级,关注商品、军工及“HALO交易”。在资金回流股市、大宗商品价格上行、房地...
甲状腺结节会变癌吗?裴海旭解答 体检发现甲状腺结节后,“这个结节会不会变癌”是大家最关心、最焦虑的问题,甚至有不少人因为担心结节恶变...
南模生物:2026年公司将“抓... 证券日报网3月2日讯 ,南模生物在接受调研者提问时表示,2026年公司将“抓质量”作为发展重点,把质...
战火波及!股市休市2天,这国宣... 中东金融市场,受到战火波及! 阿联酋日前宣布,阿布扎比证券交易所和迪拜金融市场于3月2日和3日休市。...
假肢接受腔发黄、有异味?2个简... 戴假肢第一年夏天,有件事我一直没好意思说。 每次下班脱掉假肢,接受腔里总有股闷了一天的味道。擦也擦了...
原创 烂... 买房买到烂尾楼,这种滋味,没经历过的人永远体会不到! 近日,胶州市委副书记、市长于冬泉,在“民生...
从技术人到创业家,中国GEO实... 对话刘敏:为什么GEO是企业AI时代的“最后窗口期”? 【深圳,2026年2月28日电】初见刘敏(L...
罕见!石油类LOF基金,涨停潮... 受中东地缘政治局势显著升级影响,国际原油市场迎来剧烈波动。 3月首个交易日,A股油气产业链全线爆发,...
深夜暴跌!白银跳水,美股开盘大... 全线走低。 当地时间3月2日,美股三大指数大幅低开,纳指一度跌1.6%,道指、标普500指数一度跌约...
港股IPO周报:胜宏科技等多家... 财联社3月1日讯(编辑 冯轶)财联社为您带来每周港股新股资讯。 据利弗莫尔证券显示,本周(2月2...
全国政协委员刘永好:鼓励传统产... 封面新闻记者 张馨心 3月2日,新希望集团媒体沟通会在京举行。全国政协委员、新希望集团董事长刘永好透...
天津劝华集团、津投资本分别与天... ⤴ 点击蓝字关注 | 国 企 动 态 2月27日下午,天津劝业华联集团有限公司(以下简称“劝华集团”...
原创 涨... 2026 年开年,黄金稳稳涨了 10% 到 15%,本以为已经是市场顶流,没想到家里那些被当成垃圾的...