Java时间格式化

473 阅读1分钟

# Java时间格式化 yyyy-MM-dd和yyyy-MM-dd HH:mm:ss

yyyy和YYYY的区别:“YYYY”表示的是Week year,就是这天所在的周所属的年,那2022年的第一周按照这个定义就是2021年12月27日至2021年1月2日这7天,按照Week year,2020年12月27日也就算在2022年了。 格式化的时候,使用yyyy,不要使用YYYY,除非有特殊的业务需求。

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.commons.lang3.time.DateUtils;

import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

@Slf4j
public class DateUtil {
    //格式化类型到时分秒(HH是24小时制)
    public static final String DATETIME = "yyyy-MM-dd HH:mm:ss";
    //格式类型到天
    public static final String DATE1 = "yyyy-MM-dd";

    /**
     * 按(yyyy-MM-dd)进行格式化
     * @param date
     * @return
     */
    public static String formatDate(Date date) {
        return formatDate(date, DATE1);
    }
    /**
     * 按(yyyy-MM-dd HH:mm:ss)进行格式化
     * @param date
     * @return
     */
    public static String formatDateTime(Date date) {
        return formatDate(date, DATETIME);
    }
    
    /**
     * DateFormatUtils是org.apache.commons:commons-lang3.3.9下的工具类
     * @param date
     * @param pattern
     * @return
     */
    public static String formatDate(Date date, String pattern) {
        if (date == null) {
            return null;
        }
        return DateFormatUtils.format(date, pattern, Locale.CHINA);
    }
    /**
     * 使用SimpleDateFormat进行格式化
     * @param date
     * @param pattern
     * @return
     */
    public static String formatDate2(Date date, String pattern) {
        if (date == null) {
            return null;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        return sdf.format(date);
    }
    
    
    
    /**
     * 获取days后的时间
     * @param date
     * @param days
     * @return
     */
    public static Date addDays(Date date, Integer days) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DAY_OF_MONTH, days);
        return calendar.getTime();
    }
    
    
    /**
     * 获取两个时间之间的天的列表
     * @param startDate
     * @param endDate
     * @return
     */
    private List<String> getDateList(Date startDate,Date endDate){
        List<String> rlist = new ArrayList<>();
        Date temp = startDate;
        while (true){
            temp = DateUtil.addDays(temp,1);
            if(temp.after(endDate)){
                break;
            }else{
                rlist.add(DateUtil.formatDate(temp));
            }
        }
        return rlist;
    }



}

引入工具类

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.7</version>
</dependency>