package com.huatek.busi.common.util;

import org.apache.commons.lang3.time.DateFormatUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;

public class TimeUtil {

    /**
     * 上个月1号  格式yyyy-MM-dd
     * 
     * @return
     */
    public static Date getLastMonth() {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
        Date date = new Date();
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date); // 设置为当前时间
        calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1); // 设置为上一个月
        date = calendar.getTime();
        String accDate = format.format(date)+"-01";
        Date result = null ;
        SimpleDateFormat resultformat = new SimpleDateFormat("yyyy-MM-dd");
        try {
            result = resultformat.parse(accDate);
        } catch (ParseException e) {
             e.printStackTrace();
        }
        return result;
    }

    /**
     * 当前月1号 格式yyyy-MM-dd
     * 
     * @return
     */
    public static Date getCurrentMonth() {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
        Date date = new Date();
        String accDate = format.format(date)+"-01";
        Date result = null ;
        SimpleDateFormat resultformat = new SimpleDateFormat("yyyy-MM-dd");
        try {
            result = resultformat.parse(accDate);
        } catch (ParseException e) {
             e.printStackTrace();
        }
        return result;
    }    
    
    public static String getTimeStr(LocalDateTime dataTime)
    {
        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
        return df.format(dataTime);
    }

    /**
     * 得到日期字符串 默认格式（yyyy-MM-dd） pattern可以为："yyyy-MM-dd" "HH:mm:ss" "E"
     */
    public static String formatDate(Date date, Object... pattern) {
        String formatDate = null;
        if (pattern != null && pattern.length > 0) {
            formatDate = DateFormatUtils.format(date, pattern[0].toString());
        } else {
            formatDate = DateFormatUtils.format(date, "yyyy-MM-dd");
        }
        return formatDate;
    }

    /**
     * 得到当前年份字符串 格式（yyyy）
     */
    public static String getYear() {
        return formatDate(new Date(), "yyyy");
    }

    /**
     * 得到当前月份字符串 格式（MM）
     */
    public static String getMonth() {
        return formatDate(new Date(), "MM");
    }

    /**
     * 得到当天字符串 格式（dd）
     */
    public static String getDay() {
        return formatDate(new Date(), "dd");
    }

    public static String getYYMMDDTime() {
        return getYear() + getMonth() + getDay();
    }
}
