天天看點

JAVA時間格式處理工具類

import java.text.DateFormat;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

public class DateUtil {

/**
 * 預設日期格式
 */
public static String DEFAULT_FORMAT = "yyyy-MM-dd";
private static final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
private static final SimpleDateFormat formatMs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.sss");

/**
 * 格式化日期
 * @param date 日期對象
 * @return String 日期字元串
 */
public static String formatDate(Date date){
    SimpleDateFormat f = new SimpleDateFormat(DEFAULT_FORMAT);
    String sDate = f.format(date);
    return sDate;
}
/**
 * 格式化日期
 * @param str 日期對象
 * @return String 日期字元串
 */
public static Date formatDate(String str){
    Date date = null;
    try{
        SimpleDateFormat f = new SimpleDateFormat(DEFAULT_FORMAT);
        date = f.parse(str);
    }catch (Exception e){
        e.printStackTrace();
    }

    return date;
}

/**
 * 擷取某年第一天日期
 * @param date 賬期
 * @return Date
 */
public static String getYearFirst(String date){
    Calendar calendar = Calendar.getInstance();
    calendar.clear();
    calendar.set(Calendar.YEAR, Integer.parseInt(date.substring(0, 4)));
    Date currYearFirst = calendar.getTime();
    return formatDate(currYearFirst);
}

/**
 * 擷取上年第一天日期
 * @param date 賬期
 * @return Date
 */
public static String getLastYearFirst(String date){
    Calendar calendar = Calendar.getInstance();
    calendar.clear();
    calendar.set(Calendar.YEAR, Integer.parseInt(date.substring(0, 4)));
    calendar.add(Calendar.YEAR, -1);
    Date currYearFirst = calendar.getTime();
    return formatDate(currYearFirst);
}

/**
 * 擷取某日的前一天日期
 * @return Date
 */
public Date getDaysBefore(String dateString, int days) throws ParseException {
    DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
    Date inputDate = dateFormat.parse(dateString);

    Calendar cal = Calendar.getInstance();
    cal.setTime(inputDate);

    int dayOfYear = cal.get(Calendar.DAY_OF_YEAR);
    cal.set(Calendar.DAY_OF_YEAR, dayOfYear - days);

    return cal.getTime();
}

/**
 * 擷取某月上一個月份
 * @return Date
 */
public Date getMonthsBefore(String dateString, int months) throws ParseException {
    DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
    Date inputDate = dateFormat.parse(dateString);

    Calendar cal = Calendar.getInstance();
    cal.setTime(inputDate);

    int monthOfYear = cal.get(Calendar.MONTH);
    cal.set(Calendar.MONTH, monthOfYear - months);

    return cal.getTime();
}

/**
 * 擷取某月第一天日期
 * @return Date
 */
public Date getFisrtDayOfMonth(String dateString) throws ParseException {
    DateFormat dateFormat = new SimpleDateFormat("yyyyMM");
    Date inputDate = dateFormat.parse(dateString);

    Calendar cal = Calendar.getInstance();
    cal.setTime(inputDate);

    int firstDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
    cal.set(Calendar.DAY_OF_MONTH, firstDay);

    return cal.getTime();
}

/**
 * 擷取某月最後一天日期
 * @return Date
 */
public Date getLastDayOfMonth(String dateString) throws ParseException {
    DateFormat dateFormat = new SimpleDateFormat("yyyyMM");
    Date inputDate = dateFormat.parse(dateString);

    Calendar cal = Calendar.getInstance();
    cal.setTime(inputDate);

    int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
    cal.set(Calendar.DAY_OF_MONTH, lastDay);

    return cal.getTime();
}

/**
 * 擷取最後一個月的第一天日期
 * @return Date
 */
public static String getLastMonthFirstDay() {
    Calendar cal_1 = Calendar.getInstance();
    cal_1.add(Calendar.MONTH, -1);
    cal_1.set(Calendar.DAY_OF_MONTH, 1);
    String firstDay = format.format(cal_1.getTime());
    System.out.println("-----1------firstDay:" + firstDay);

    return firstDay;
}

/**
 * 擷取最後一個月最後一天日期
 * @return Date
 */
public static String getLastMonthlastDay() {
    Calendar cale = Calendar.getInstance();
    cale.set(Calendar.DAY_OF_MONTH, 0);
    String lastDay = format.format(cale.getTime());
    System.out.println("-----2------lastDay:" + lastDay);

    return lastDay;
}

/**
 * 擷取目前月第一天日期
 * @return Date
 */
public static String getCurrentMonthFirstDay() {
    Calendar c = Calendar.getInstance();
    c.add(Calendar.MONTH, 0);
    c.set(Calendar.DAY_OF_MONTH, 1);
    String first = format.format(c.getTime());
    System.out.println("===============first:" + first);
    return first;
}

/**
 * 擷取目前月最後一天日期
 * @return Date
 */
public static String getCurrentMonthlastDay() {
    Calendar ca = Calendar.getInstance();
    ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
    String last = format.format(ca.getTime());
    System.out.println("===============last:" + last);
    return last;
}
/**
 * 擷取目前年份第一天日期
 * @return Date
 */
public static Date getCurrYearFirst() {
    Calendar currCal = Calendar.getInstance();
    int currentYear = currCal.get(Calendar.YEAR);
    return getYearFirst(currentYear);
}
/**
 * 根據傳入的參數擷取該年的第一天
 * @return Date
 */
public static Date getCurrYearFirst(String dateString) throws ParseException {
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    Date inputDate = dateFormat.parse(dateString);
    Calendar cal = Calendar.getInstance();
    cal.setTime(inputDate);
    int currentYear = cal.get(Calendar.YEAR);
    return getYearFirst(currentYear);
}
/**
 * 根據傳入的參數擷取該年月
 * @return Date
 */
public static String getMonth(String dateString) throws ParseException {
    DateFormat dateFormat = new SimpleDateFormat("MM");
    Date inputDate = dateFormat.parse(dateString);
    Calendar cal = Calendar.getInstance();
    cal.setTime(inputDate);
    return formatDate(cal.getTime());
}
/**
 * 擷取目前年份最後一天
 * @return Date
 */
public static Date getCurrYearLast() {
    Calendar currCal = Calendar.getInstance();
    int currentYear = currCal.get(Calendar.YEAR);
    return getYearLast(currentYear);
}
/**
 * 根據傳入的參數擷取該年
 * @return Date
 */
public static Date getYearFirst(int year) {
    Calendar calendar = Calendar.getInstance();
    calendar.clear();
    calendar.set(Calendar.YEAR, year);
    Date currYearFirst = calendar.getTime();
    return currYearFirst;
}

/**
 * 根據傳入的參數擷取該年
 * @return Date
 */
public static Date getYearLast(int year) {
    Calendar calendar = Calendar.getInstance();
    calendar.clear();
    calendar.set(Calendar.YEAR, year);
    calendar.roll(Calendar.DAY_OF_YEAR, -1);
    Date currYearLast = calendar.getTime();

    return currYearLast;
}
/**
 * 根據傳入的參數擷取該年月
 * @return Date
 */
public static String getCurrentYear(){
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
    Date date = new Date();
    return sdf.format(date);}
/**
 * 根據傳入的參數擷取該年月
 * @return Date
 */
public static String getLastYear() {
    Calendar date = Calendar.getInstance();
    date.add(Calendar.YEAR, -1);
    String year = String.valueOf(date.get(Calendar.YEAR));
    return year;
}

/**
 * 現在時間+6個月與next_time比較
 * @return
 */
public static String getStaleDated(){
    SimpleDateFormat sdfTimeStamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.sss");
    Date date= new Date();
    Calendar cd = Calendar.getInstance();
    cd.setTime(date);
    cd.add(Calendar.MONTH, 6);
    date=cd.getTime();
    String stale_dated = sdfTimeStamp.format(date);

    return stale_dated;
}

/**
 * 擷取目前時間
 * @return
 */
public static String currentDatetime(){
    SimpleDateFormat tempDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String datetime = tempDate.format(new java.util.Date());

    return datetime;
}

/**
 * 擷取目前時間
 *
 * @return
 */
public static String getYyMmtime() {
    SimpleDateFormat tempDate = new SimpleDateFormat("yyyy-MM");
    String datetime = tempDate.format(new java.util.Date());

    return datetime;
}

/**
 * 日期計算
 * @param date
 * @param type
 * @param number
 * @return
 */
public static String calculateDate(String date,String type,int number){

    try{           

// SimpleDateFormat sdfTimeStamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.sss");

SimpleDateFormat sdfTimeStamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //String create_time = sdfTimeStamp.format(new Date());
        Date tmpDate = sdfTimeStamp.parse(date);
        Calendar cd = Calendar.getInstance();
        cd.setTime(tmpDate);
        if(type.equals("m")){
            cd.add(Calendar.MONTH, number);
        }else if (type.equals("d")){
            cd.add(Calendar.DAY_OF_MONTH, number);
        }else {
            return "type is unknown";
        }

        tmpDate = cd.getTime();
        String dateRuslt = sdfTimeStamp.format(tmpDate);
        return dateRuslt;
    }catch(Exception ex){
        return "calculate failed";
    }

}

public static Date getDateByStr(String string){
    //String string = "2016-10-24 21:59:06";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date =null;
    try{
        date = sdf.parse(string);
        System.out.println(sdf.parse(string));
    }catch (Exception e){
        e.printStackTrace();
    }
    return date;
}

public static String getStrByDate(Date date) {
    //String string = "2016-10-24 21:59:06";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String dateTime = null;
    try {
        dateTime = sdf.format(date);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return dateTime;
}
           
public static String getUpdateTime(){
    //目前時間重寫更新時間
    SimpleDateFormat sdfTimeStamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.sss");
    String update_time = sdfTimeStamp.format(new Date());

    return update_time;
}
           
public static void main(String[] args) throws ParseException {

    DateUtil dateTest = new DateUtil();
    // DateFormat df = new SimpleDateFormat("yyyyMMdd");
    // Date before7Day = dateTest.getDaysBefore("20140301", 7);
    // System.out.println(df.format(before7Day));
    // Date testFirstDay = dateTest.getLastDayOfMonth("201407");
    // System.out.println(df.format(testFirstDay));
    // Date testBeforeMonth = dateTest.getMonthsBefore("20140712", 12);
    // System.out.println(df.format(testBeforeMonth));
    // DateFormat df2 = new SimpleDateFormat("yyyyMM");
    // Date getFisrtDayOfMonth = dateTest.getFisrtDayOfMonth("201407");
    // System.out.println(df2.format(getFisrtDayOfMonth));
    System.out.println(getStaleDated());           

// System.out.println(formatDate(getCurrYearLast()));

// String stObj="2016-3-21";

// String[] timeDay = stObj.split("-");

// System.out.println(timeDay[1]);

}           

}