优化Excel格式化不同类型的日期对象
This commit is contained in:
		
							parent
							
								
									9370747479
								
							
						
					
					
						commit
						ac030b7275
					
				@ -3,6 +3,11 @@ package com.ruoyi.common.utils;
 | 
			
		||||
import java.lang.management.ManagementFactory;
 | 
			
		||||
import java.text.ParseException;
 | 
			
		||||
import java.text.SimpleDateFormat;
 | 
			
		||||
import java.time.LocalDate;
 | 
			
		||||
import java.time.LocalDateTime;
 | 
			
		||||
import java.time.LocalTime;
 | 
			
		||||
import java.time.ZoneId;
 | 
			
		||||
import java.time.ZonedDateTime;
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
import org.apache.commons.lang3.time.DateFormatUtils;
 | 
			
		||||
 | 
			
		||||
@ -131,6 +136,14 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
 | 
			
		||||
        return new Date(time);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 计算相差天数
 | 
			
		||||
     */
 | 
			
		||||
    public static int differentDaysByMillisecond(Date date1, Date date2)
 | 
			
		||||
    {
 | 
			
		||||
        return Math.abs((int) ((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24)));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 计算两个时间差
 | 
			
		||||
     */
 | 
			
		||||
@ -152,4 +165,23 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
 | 
			
		||||
        // long sec = diff % nd % nh % nm / ns;
 | 
			
		||||
        return day + "天" + hour + "小时" + min + "分钟";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 增加 LocalDateTime ==> Date
 | 
			
		||||
     */
 | 
			
		||||
    public static Date toDate(LocalDateTime temporalAccessor)
 | 
			
		||||
    {
 | 
			
		||||
        ZonedDateTime zdt = temporalAccessor.atZone(ZoneId.systemDefault());
 | 
			
		||||
        return Date.from(zdt.toInstant());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 增加 LocalDate ==> Date
 | 
			
		||||
     */
 | 
			
		||||
    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());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -9,6 +9,8 @@ import java.lang.reflect.Field;
 | 
			
		||||
import java.lang.reflect.Method;
 | 
			
		||||
import java.math.BigDecimal;
 | 
			
		||||
import java.text.DecimalFormat;
 | 
			
		||||
import java.time.LocalDate;
 | 
			
		||||
import java.time.LocalDateTime;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
import java.util.Comparator;
 | 
			
		||||
@ -314,7 +316,7 @@ public class ExcelUtil<T>
 | 
			
		||||
                            String dateFormat = field.getAnnotation(Excel.class).dateFormat();
 | 
			
		||||
                            if (StringUtils.isNotEmpty(dateFormat))
 | 
			
		||||
                            {
 | 
			
		||||
                                val = DateUtils.parseDateToStr(dateFormat, (Date) val);
 | 
			
		||||
                                val = parseDateToStr(dateFormat, (Date) val);
 | 
			
		||||
                            }
 | 
			
		||||
                            else
 | 
			
		||||
                            {
 | 
			
		||||
@ -431,7 +433,6 @@ public class ExcelUtil<T>
 | 
			
		||||
     * @param list 导出数据集合
 | 
			
		||||
     * @param sheetName 工作表的名称
 | 
			
		||||
     * @return 结果
 | 
			
		||||
     * @throws IOException
 | 
			
		||||
     */
 | 
			
		||||
    public void exportExcel(HttpServletResponse response, List<T> list, String sheetName)
 | 
			
		||||
    {
 | 
			
		||||
@ -446,7 +447,6 @@ public class ExcelUtil<T>
 | 
			
		||||
     * @param sheetName 工作表的名称
 | 
			
		||||
     * @param title 标题
 | 
			
		||||
     * @return 结果
 | 
			
		||||
     * @throws IOException
 | 
			
		||||
     */
 | 
			
		||||
    public void exportExcel(HttpServletResponse response, List<T> list, String sheetName, String title)
 | 
			
		||||
    {
 | 
			
		||||
@ -823,7 +823,7 @@ public class ExcelUtil<T>
 | 
			
		||||
                String dictType = attr.dictType();
 | 
			
		||||
                if (StringUtils.isNotEmpty(dateFormat) && StringUtils.isNotNull(value))
 | 
			
		||||
                {
 | 
			
		||||
                    cell.setCellValue(DateUtils.parseDateToStr(dateFormat, (Date) value));
 | 
			
		||||
                    cell.setCellValue(parseDateToStr(dateFormat, (Date) value));
 | 
			
		||||
                }
 | 
			
		||||
                else if (StringUtils.isNotEmpty(readConverterExp) && StringUtils.isNotNull(value))
 | 
			
		||||
                {
 | 
			
		||||
@ -1396,4 +1396,37 @@ public class ExcelUtil<T>
 | 
			
		||||
        }
 | 
			
		||||
        return sheetIndexPicMap;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 格式化不同类型的日期对象
 | 
			
		||||
     * 
 | 
			
		||||
     * @param dateFormat 日期格式
 | 
			
		||||
     * @param val 被格式化的日期对象
 | 
			
		||||
     * @return 格式化后的日期字符
 | 
			
		||||
     */
 | 
			
		||||
    public String parseDateToStr(String dateFormat, Object val)
 | 
			
		||||
    {
 | 
			
		||||
        if (val == null)
 | 
			
		||||
        {
 | 
			
		||||
            return "";
 | 
			
		||||
        }
 | 
			
		||||
        String str;
 | 
			
		||||
        if (val instanceof Date)
 | 
			
		||||
        {
 | 
			
		||||
            str = DateUtils.parseDateToStr(dateFormat, (Date) val);
 | 
			
		||||
        }
 | 
			
		||||
        else if (val instanceof LocalDateTime)
 | 
			
		||||
        {
 | 
			
		||||
            str = DateUtils.parseDateToStr(dateFormat, DateUtils.toDate((LocalDateTime) val));
 | 
			
		||||
        }
 | 
			
		||||
        else if (val instanceof LocalDate)
 | 
			
		||||
        {
 | 
			
		||||
            str = DateUtils.parseDateToStr(dateFormat, DateUtils.toDate((LocalDate) val));
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            str = val.toString();
 | 
			
		||||
        }
 | 
			
		||||
        return str;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user