| | |
| | | package com.ruoyi.common.utils; |
| | | |
| | | import org.apache.commons.lang3.time.DateFormatUtils; |
| | | |
| | | 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 static String YYYY = "yyyy"; |
| | | |
| | | public static String YYYY_MM = "yyyy-MM"; |
| | |
| | | } |
| | | |
| | | /** |
| | | * 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 |
| | |
| | | /** |
| | | * 获取当前季度字符串 |
| | | * |
| | | * @return |
| | | * @throws Exception |
| | | * @return 当前季度字符串 |
| | | * @throws Exception 异常 |
| | | */ |
| | | public static String getNowQuarter() throws Exception { |
| | | //当前所在季度 |
| | | Date date = new Date(); |
| | | int quarterOfYear = getQuarterOfYear(date); |
| | | String quarterOfYearStr = null; |
| | | quarterOfYearStr = NumberDisplaceChineseUtil.numberToChinese(quarterOfYear); |
| | | 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年四季度"))); |
| | | } |
| | | } |