From a7a8a50f48c1bff5ddc52b3bad1782328f8043d8 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期五, 12 四月 2024 18:50:20 +0800 Subject: [PATCH] 基础数据配置接口修改 --- ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java | 152 +++++++++++++++++++++++++++++++++----------------- 1 files changed, 99 insertions(+), 53 deletions(-) diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java index 01b986b..04099af 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java @@ -1,24 +1,29 @@ package com.ruoyi.common.utils; +import cn.hutool.core.convert.NumberChineseFormatter; import java.lang.management.ManagementFactory; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.time.*; +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.ZoneId; +import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.Map; - import org.apache.commons.lang3.time.DateFormatUtils; /** * 时间工具类 - * + * * @author ruoyi */ -public class DateUtils extends org.apache.commons.lang3.time.DateUtils -{ +public class DateUtils extends org.apache.commons.lang3.time.DateUtils { + public static String YYYY = "yyyy"; public static String YYYY_MM = "yyyy-MM"; @@ -30,63 +35,52 @@ public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; private static String[] parsePatterns = { - "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", + "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"}; /** * 获取当前Date型日期 - * + * * @return Date() 当前日期 */ - public static Date getNowDate() - { + public static Date getNowDate() { return new Date(); } /** * 获取当前日期, 默认格式为yyyy-MM-dd - * + * * @return String */ - public static String getDate() - { + public static String getDate() { return dateTimeNow(YYYY_MM_DD); } - public static final String getTime() - { + public static final String getTime() { return dateTimeNow(YYYY_MM_DD_HH_MM_SS); } - public static final String dateTimeNow() - { + public static final String dateTimeNow() { return dateTimeNow(YYYYMMDDHHMMSS); } - public static final String dateTimeNow(final String format) - { + public static final String dateTimeNow(final String format) { return parseDateToStr(format, new Date()); } - public static final String dateTime(final Date date) - { + public static final String dateTime(final Date date) { return parseDateToStr(YYYY_MM_DD, date); } - public static final String parseDateToStr(final String format, final Date date) - { + public static final String parseDateToStr(final String format, final Date date) { return new SimpleDateFormat(format).format(date); } - public static final Date dateTime(final String format, final String ts) - { - try - { + public static final Date dateTime(final String format, final String ts) { + try { return new SimpleDateFormat(format).parse(ts); - } - catch (ParseException e) - { + } catch (ParseException e) { throw new RuntimeException(e); } } @@ -94,8 +88,7 @@ /** * 日期路径 即年/月/日 如2018/08/08 */ - public static final String datePath() - { + public static final String datePath() { Date now = new Date(); return DateFormatUtils.format(now, "yyyy/MM/dd"); } @@ -103,8 +96,7 @@ /** * 日期路径 即年/月/日 如20180808 */ - public static final String dateTime() - { + public static final String dateTime() { Date now = new Date(); return DateFormatUtils.format(now, "yyyyMMdd"); } @@ -112,18 +104,13 @@ /** * 日期型字符串转化为日期 格式 */ - public static Date parseDate(Object str) - { - if (str == null) - { + public static Date parseDate(Object str) { + if (str == null) { return null; } - try - { + try { return parseDate(str.toString(), parsePatterns); - } - catch (ParseException e) - { + } catch (ParseException e) { return null; } } @@ -131,8 +118,7 @@ /** * 获取服务器启动时间 */ - public static Date getServerStartDate() - { + public static Date getServerStartDate() { long time = ManagementFactory.getRuntimeMXBean().getStartTime(); return new Date(time); } @@ -140,20 +126,18 @@ /** * 计算相差天数 */ - public static int differentDaysByMillisecond(Date date1, Date date2) - { + public static int differentDaysByMillisecond(Date date1, Date date2) { return Math.abs((int) ((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24))); } /** * 计算时间差 * - * @param endDate 最后时间 + * @param endDate 最后时间 * @param startTime 开始时间 * @return 时间差(天/小时/分钟) */ - public static String timeDistance(Date endDate, Date startTime) - { + public static String timeDistance(Date endDate, Date startTime) { long nd = 1000 * 24 * 60 * 60; long nh = 1000 * 60 * 60; long nm = 1000 * 60; @@ -174,8 +158,7 @@ /** * 增加 LocalDateTime ==> Date */ - public static Date toDate(LocalDateTime temporalAccessor) - { + public static Date toDate(LocalDateTime temporalAccessor) { ZonedDateTime zdt = temporalAccessor.atZone(ZoneId.systemDefault()); return Date.from(zdt.toInstant()); } @@ -183,8 +166,7 @@ /** * 增加 LocalDate ==> Date */ - public static Date toDate(LocalDate temporalAccessor) - { + public static Date toDate(LocalDate temporalAccessor) { LocalDateTime localDateTime = LocalDateTime.of(temporalAccessor, LocalTime.of(0, 0, 0)); ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault()); return Date.from(zdt.toInstant()); @@ -250,6 +232,7 @@ calendar.setTime(date); return calendar.get(Calendar.MONTH) / 3 + 1; } + /** * 指定日期所在季度的第一天/最后一天时间 * @@ -354,6 +337,18 @@ } /** + * Date转为LocalDateTime + * + * @param date 日期 + * @return LocalDateTime + */ + public static LocalDate dateToLocalDate(Date date) { + Instant instant = date.toInstant(); + ZoneId zoneId = ZoneId.systemDefault(); + return instant.atZone(zoneId).toLocalDate(); + } + + /** * localdate转为字符串 * * @param time localdate @@ -374,4 +369,55 @@ return LocalDate.parse(time, DateTimeFormatter.ofPattern("yyyy-MM-dd")); } + /** + * 获取当前季度字符串 + * + * @return 当前季度字符串 + * @throws Exception 异常 + */ + public static String getNowQuarter() throws Exception { + //当前所在季度 + Date date = new Date(); + char quarterOfYear = String.valueOf(getQuarterOfYear(date)).toCharArray()[0]; + String quarterOfYearStr = NumberChineseFormatter.numberCharToChinese(quarterOfYear, false); + LocalDate now = LocalDate.now(); + return String.format("%s年%s季度", now.getYear(), quarterOfYearStr); + } + + public static Date getQuarterDate(String quarter) { + // 提取年份和季度信息 + int year = Integer.parseInt(quarter.substring(0, 4)); + int quarterNumber = NumberChineseFormatter.chineseToNumber(quarter.substring(5, 6)); // 季度数字 + // 计算季度初的日期 + LocalDate startDate; + switch (quarterNumber) { + case 1: + startDate = LocalDate.of(year, 1, 1); + break; + case 2: + startDate = LocalDate.of(year, 4, 1); + break; + case 3: + startDate = LocalDate.of(year, 7, 1); + break; + case 4: + startDate = LocalDate.of(year, 10, 1); + break; + default: + throw new IllegalArgumentException("Invalid quarter number: " + quarterNumber); + } + return DateUtils.toDate(startDate); + } + + //测试 getNowQuarter + public static void main(String[] args) throws Exception { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String nowQuarter = getNowQuarter(); + System.out.println(nowQuarter); + System.out.println(NumberChineseFormatter.chineseToNumber("一")); + System.out.println(simpleDateFormat.format(getQuarterDate("2024年一季度"))); + System.out.println(simpleDateFormat.format(getQuarterDate("2024年二季度"))); + System.out.println(simpleDateFormat.format(getQuarterDate("2024年三季度"))); + System.out.println(simpleDateFormat.format(getQuarterDate("2024年四季度"))); + } } -- Gitblit v1.7.1