时间工具类

package com.alphabet.xjerpplus.carmaintaince.CalendarUtil;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

/**
 * 日期工具类
 */
public class CalendarUtil {

    public static Long getYYMMDD(Date date) {
        SimpleDateFormat df = new SimpleDateFormat("yyMMdd");
        return Long.valueOf(df.format(date));
    }

    public static Long getMM(Date date) {
        SimpleDateFormat df = new SimpleDateFormat("MM");
        return Long.valueOf(df.format(date));
    }

    public static Long getYY(Date date) {
        SimpleDateFormat df = new SimpleDateFormat("yy");
        return Long.valueOf(df.format(date));
    }

    public static String getDayOfYMshort() {
        SimpleDateFormat df = new SimpleDateFormat("yyMM");
        return df.format(new Date());
    }

    /**
     * 将日期格式化为指定格式
     * 
     * @param pattern
     * @param date
     * @return
     */
    public static String formatDate(String pattern, Date date) {
        SimpleDateFormat df = new SimpleDateFormat(pattern);
        return df.format(date);
    }

    /**
     * 获得两个时间段间的时间 (yyyy 和yyyyMM和yyyym 月份,季度,年份)
     * 
     * @param strartDate
     * @param endDate
     * @return
     */
    public static List<String> getDateList(String start, String end) {
        List<String> dateList = new ArrayList<String>();
        String format = null;
        Integer field = null;
        int len = start.length();
        switch (len) {
        case 4:
            format = "yyyy";
            field = Calendar.YEAR;
            break;
        case 5:
            start = seasonToMonth(start, true);
            end = seasonToMonth(end, false);
            format = "yyMM";
            field = Calendar.MONTH;
            break;
        case 6:
            format = "yyyyMM";
            field = Calendar.MONTH;
            break;
        case 8:
            format = "yyyyMMdd";
            field = Calendar.DAY_OF_YEAR;
            break;
        case 7:
            format = "yyyy-MM";
            field = Calendar.MONTH;
            break;
        case 10:
            format = "yyyy-MM-dd";
            field = Calendar.DAY_OF_YEAR;
            break;
        default:
            break;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        Calendar calendar = Calendar.getInstance();
        try {
            Date s = sdf.parse(start);
            Date e = sdf.parse(end);
            calendar.setTime(s);
            while (s.compareTo(e) < 1) {
                String formatter = sdf.format(s);
                if (len == 5) {
                    formatter = getSeasonDate(formatter);
                    calendar.add(field, 2);
                }
                calendar.add(field, 1);
                s = calendar.getTime();
                dateList.add(formatter);
            }
        } catch (ParseException e1) {

        }
        return dateList;
    }

    /**
     * 将字符串日期转为Calendar
     * 
     * @param pattern
     * @param date
     * @return
     */
    public static Calendar formatStr(String pattern, String date) {
        try {
            SimpleDateFormat sdf = new SimpleDateFormat(pattern);
            Date dt = sdf.parse(date);
            Calendar cal = Calendar.getInstance();
            cal.setTime(dt);
            return cal;
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 获取当前时间精确到毫秒
     * 
     * @return String
     */
    public static String getCurrentTimeString() {
        return new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
    }

    /**
     * 获取当前时间yyyy-MM-dd HH:mm:ss
     * 
     * @return String
     */
    public static String getNowTimeString() {
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
    }

    /**
     * 将date转化为字符串yyyy-MM-dd HH:mm:ss
     * 
     * @param date
     * @return
     */
    public static String covertDateToString(Date date) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return sdf.format(date);
    }

    /**
     * 将字符串转化为date  yyyy-MM-dd HH:mm:ss
     * 
     * @param date
     * @return
     * @throws ParseException
     */
    public static Date covertStringToDate(String dateStr) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return sdf.parse(dateStr);
    }

    /**
     * 取得季度月
     * 
     * @param date
     * @return
     */
    public static String getSeasonDate(String date) {
        Calendar c = formatStr("yyMM", date);
        int year = c.get(Calendar.YEAR);
        int nSeason = c.get(Calendar.MONTH) / 3 + 1;
        return year + "" + nSeason;
    }

    /**
     * 获取当前时间的前N个工作日的时间
     * 
     * @param intervalDay
     * @return
     */
    public static Date getStartDutyDate(int intervalDay) {
        Date date = new Date();// 当前时间
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DATE, -intervalDay);
        return calendar.getTime();
    }

    /**
     * 获取当前时间的后N个工作日的时间
     * 
     * @param intervalDay
     * @return
     */
    public static Date getDutyDate(int intervalDay) {
        Date date = new Date();// 当前时间
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DATE, intervalDay);
        return calendar.getTime();
    }

    /**
     * 
     * @param dateStr
     * @return
     * @throws ParseException
     */
    public static long getDaysFromNow(Date date) throws ParseException {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        long time1 = cal.getTimeInMillis();
        cal.setTime(new Date());
        long time2 = cal.getTimeInMillis();
        return (time2 - time1) / (1000 * 3600 * 24);
    }

    /**
     * 时间格式的字符串转成整形
     * 
     * @param date
     * @return
     */
    public static final String stringDateToNumber(String date) {
        return date.replaceAll("-", "").substring(2);
    }

    /**
     * 季度转换成月
     * 
     * @param date
     * @param start
     * @return
     */
    public static final String seasonToMonth(String date, boolean start) {
        int i = date.length() - 1;
        int k = Integer.valueOf(date.substring(i));
        int month = 3 * k;
        if (start) {
            month -= 2;
        }
        return date.substring(2, i) + (month > 9 ? "" : "0") + month;
    }
    
    /**
     * 获取格式化年月日
     * @param date
     * @return
     */
    public static final int getFmtNYR(String date) {
        String tmp = date.replaceAll("-", "");
        tmp = tmp.substring(2);
        return Integer.parseInt(tmp);
    }

    /**
     * 得到几天后的时间
     * @param d     日期
     * @param day   日期差
     * @return  字符串日期
     */
    public static String getDateBefore(Date d, int day) {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        Calendar now = Calendar.getInstance();
        now.setTime(d);
        now.set(Calendar.DATE, now.get(Calendar.DATE) + day);
        return df.format(now.getTime());
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值