1. 程式人生 > >Java基於apache.commons.lang的日期工具類簡單封裝

Java基於apache.commons.lang的日期工具類簡單封裝

package cn.lettleprincess.util;

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

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

/**
 * @ClassName:MyDateUtils
 * @Description:日期操作類工具。
 * @Author:hankaibo
 * @date:2013-8-18
 * @UpdateUser:hankaibo
 * @UpdateDate:2013-8-18 上午10:36:19
 * @UpdateRemark:What is modified?
 */
public class MyDateUtils {
    private final static String DATE_FORMAT = "yyyy-MM-dd";
    private final static String DATE_FORMAT_CN = "yyyy年MM月dd日";
    private final static String TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
    private final static String TIME_FORMAT_CN = "yyyy年MM月dd日 HH:mm:ss";
    private final static String MONTH_FORMAT = "yyyy-MM";
    private final static String DAY_FORMAT = "yyyyMMdd";

    /**
     * @Title:getMonthFirstDay
     * @Description: 得到當前月的第一天.
     * @return
     * @return String
     */
    public static String getMonthFirstDay() {
        Calendar cal = Calendar.getInstance();
        // 方法一,預設只設置到年和月份.
        // Calendar f = (Calendar) cal.clone();
        // f.clear();
        // f.set(Calendar.YEAR, cal.get(Calendar.YEAR));
        // f.set(Calendar.MONTH, cal.get(Calendar.MONTH));
        // f.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DATE));
        // return DateFormatUtils.format(f, DATE_FORMAT);

        // 方法二.
        cal.set(Calendar.DATE, 1);
        return DateFormatUtils.format(cal, DATE_FORMAT);

    }

    /**
     * @Title:getMonthLastDay
     * @Description: 得到當前月最後一天
     * @return
     * @return String
     */
    public static String getMonthLastDay() {
        Calendar cal = Calendar.getInstance();
        Calendar f = (Calendar) cal.clone();
        f.clear();
        // 方法一
        // f.set(Calendar.YEAR, cal.get(Calendar.YEAR));
        // f.set(Calendar.MONTH, cal.get(Calendar.MONTH) + 1);
        // f.set(Calendar.MILLISECOND, -1);
        // return DateFormatUtils.format(f, DATE_FORMAT);

        // 方法二
        // f.set(Calendar.YEAR, cal.get(Calendar.YEAR));
        // f.set(Calendar.MONTH, cal.get(Calendar.MONTH));
        // f.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DATE));
        // return DateFormatUtils.format(f, DATE_FORMAT);

        // 方法三(同一)
        cal.set(Calendar.DATE, 1);// 設為當前月的1號
        cal.add(Calendar.MONTH, 1);// 加一個月,變為下月的1號
        cal.add(Calendar.DATE, -1);// 減去一天,變為當月最後一天
        return DateFormatUtils.format(cal, DATE_FORMAT);
    }

    /**
     * @Title:getPreviousMonthFirst
     * @Description: 得到上個月的第一天
     * @return
     * @return String
     */
    public static String getPreviousMonthFirst() {
        Calendar cal = Calendar.getInstance();
        Calendar f = (Calendar) cal.clone();
        f.clear();
        // 方法一
        // f.set(Calendar.YEAR, cal.get(Calendar.YEAR));
        // f.set(Calendar.MONTH, cal.get(Calendar.MONTH) - 1);
        // f.set(Calendar.DATE, 1);
        // return DateFormatUtils.format(f, DATE_FORMAT);

        // 方法二
        // f.set(Calendar.YEAR, cal.get(Calendar.YEAR));
        // f.set(Calendar.MONTH, cal.get(Calendar.MONTH) - 1);
        // f.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DATE));
        // return DateFormatUtils.format(f, DATE_FORMAT);

        // 方法三(同一)
        cal.set(Calendar.DATE, 1);// 設為當前月的1號
        cal.add(Calendar.MONTH, -1);
        return DateFormatUtils.format(cal, DATE_FORMAT);
    }

    /**
     * @Title:getPreviousMonthEnd
     * @Description: 得到上個月最後一天
     * @return
     * @return String
     */
    public static String getPreviousMonthEnd() {
        Calendar cal = Calendar.getInstance();
        Calendar f = (Calendar) cal.clone();
        f.clear();
        // 方法一
        // f.set(Calendar.YEAR, cal.get(Calendar.YEAR));
        // f.set(Calendar.MONTH, cal.get(Calendar.MONTH));
        // f.set(Calendar.MILLISECOND, -1);
        // return DateFormatUtils.format(f, DATE_FORMAT);

        // 方法二
        // f.set(Calendar.YEAR, cal.get(Calendar.YEAR));
        // f.set(Calendar.MONTH, cal.get(Calendar.MONTH) - 1);
        // f.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DATE));
        // return DateFormatUtils.format(f, DATE_FORMAT);

        // 方法三(同一)
        cal.set(Calendar.DATE, 1);// 設為當前月的1號
        cal.add(Calendar.MONTH, 0);//
        cal.add(Calendar.DATE, -1);// 減去一天,變為當月最後一天
        return DateFormatUtils.format(cal, DATE_FORMAT);
    }

    /**
     * @Title:getNextMonthFirst
     * @Description: 得到下個月的第一天
     * @return
     * @return String
     */
    public static String getNextMonthFirst() {
        Calendar cal = Calendar.getInstance();
        Calendar f = (Calendar) cal.clone();
        f.clear();
        // 方法一
        // f.set(Calendar.YEAR, cal.get(Calendar.YEAR));
        // f.set(Calendar.MONTH, cal.get(Calendar.MONTH) + 1);
        // f.set(Calendar.DATE, 1);
        // or f.set(Calendar.DAY_OF_MONTH,cal.getActualMinimum(Calendar.DATE));
        // return DateFormatUtils.format(f, DATE_FORMAT);

        // 方法二
        cal.set(Calendar.DATE, 1);// 設為當前月的1號
        cal.add(Calendar.MONTH, +1);// 加一個月,變為下月的1號
        return DateFormatUtils.format(cal, DATE_FORMAT);
    }

    /**
     * @Title:getNextMonthEnd
     * @Description: 得到下個月最後一天。
     * @return
     * @return String
     */
    public static String getNextMonthEnd() {
        Calendar cal = Calendar.getInstance();
        // cal.set(Calendar.DATE, +1);
        // cal.add(Calendar.MONTH, +2);
        // cal.add(Calendar.DATE, -1);
        // return DateFormatUtils.format(cal, DATE_FORMAT);

        // 方法二
        cal.add(Calendar.MONTH, 1);// 加一個月
        cal.set(Calendar.DATE, 1);// 把日期設定為當月第一天
        cal.roll(Calendar.DATE, -1);// 日期回滾一天,也就是本月最後一天
        return DateFormatUtils.format(cal, DATE_FORMAT);
    }

    /**
     * @Title:getCurrentMonthDays
     * @Description: 得到當前月的天數
     * @return
     * @return int
     */
    public static int getCurrentMonthDays() {
        Calendar cal = new GregorianCalendar();// Calendar.getInstance();
        int days = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
        return days;
    }

    /**
     * @Title:getSpecifiedMonthDays
     * @Description: 得到指定的月份的天數
     * @param date
     * @return
     * @return int
     */
    public static int getSpecifiedMonthDays(String date) {
        Calendar cal = Calendar.getInstance();
        try {
            cal.setTime(DateUtils.parseDate(date, MONTH_FORMAT));
            int days = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
            return days;
        } catch (Exception e1) {
            e1.printStackTrace();
        }
        return 0;
    }

    /**
     * @Title:getCurrentDate
     * @Description: 得到當前日期
     * @return
     * @return String
     */
    public static String getCurrentDate() {
        Calendar cal = Calendar.getInstance();
        String currentDate = DateFormatUtils.format(cal, DATE_FORMAT);
        return currentDate;
    }

    /**
     * @Title:getCurrentTime
     * @Description: 得到當前的時間
     * @return
     * @return String
     */
    public static String getCurrentTime() {
        Calendar cal = Calendar.getInstance();
        String currentDate = DateFormatUtils.format(cal, TIME_FORMAT);
        return currentDate;
    }

    /**
     * @Title:getOffsetDate
     * @Description: 得到與當前日期偏移量為X的日期。
     * @param offset
     * @return
     * @return String
     */
    public static String getOffsetDate(int offset) {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.DAY_OF_MONTH, offset);
        String currentDate = DateFormatUtils.format(cal, DATE_FORMAT);
        return currentDate;
    }

    /**
     * @Title:getSpecifiedOffsetDate
     * @Description: 得到與指定日期偏移量為X的日期。
     * @param specifiedDate指定的日期
     *            ,格式為YYYY-MM-DD
     * @param offset
     * @return 返回yyyy-MM-dd格式的字串日期
     * @return String
     * @throws ParseException
     */
    public static String getSpecifiedOffsetDate(String specifiedDate, int offset) throws ParseException {
        Date date = DateUtils.parseDate(specifiedDate, DATE_FORMAT);
        Calendar cal = DateUtils.toCalendar(date);
        cal.add(Calendar.DAY_OF_MONTH, offset);
        String returnDate = DateFormatUtils.format(cal, DATE_FORMAT);
        return returnDate;
    }

    /**
     * @Title:getSpecifiedOffsetTime
     * @Description: 得到與指定日期時間偏移量為X的時間。
     * @param specifiedTime
     *            指定的時間,格式為yyyy-MM-dd HH:mm:ss
     * @param offset
     *            偏移天數
     * @return 返回yyyy-MM-dd HH:mm:ss格式的字串時間
     * @throws ParseException
     * @return String
     */
    public static String getSpecifiedOffsetTime(String specifiedTime, int offset) throws ParseException {
        Date date = DateUtils.parseDate(specifiedTime, TIME_FORMAT);
        Calendar cal = DateUtils.toCalendar(date);
        cal.add(Calendar.DAY_OF_MONTH, offset);
        String returnDate = DateFormatUtils.format(cal, TIME_FORMAT);
        return returnDate;
    }

    /**
     * @Title:getOffsetDateTime
     * @Description: 得到與指定日期時間偏移量為X的時間。
     * @param specifiedDateTime
     *            指定的時間,格式為yyyy-MM-dd HH:mm:ss/yyyy-MM-dd
     * @param offset
     *            偏移天數
     * @return
     * @throws ParseException
     * @return String
     */
    public static String getOffsetDateTime(String specifiedDateTime, int offset) throws ParseException {
        String regexStr = "\\d{4}-\\d{2}-\\d{2}";
        if (specifiedDateTime.matches(regexStr)) {
            return getSpecifiedOffsetDate(specifiedDateTime, offset);
        } else {
            return getSpecifiedOffsetTime(specifiedDateTime, offset);
        }
    }

    /**
     * 判斷是否為潤年
     * 
     * @param year
     * @return
     */
    public static boolean isLeapYear(int year) {
        return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
    }

    /**
     * @Title:getWeekDay
     * @Description: 判斷是星期幾.
     * @param c
     * @return
     * @return String
     */
    public static String getWeekDay(Calendar c) {
        if (c == null) {
            return "星期一";
        }
        switch (c.get(Calendar.DAY_OF_WEEK)) {
        case Calendar.MONDAY:
            return "星期一";
        case Calendar.TUESDAY:
            return "星期二";
        case Calendar.WEDNESDAY:
            return "星期三";
        case Calendar.THURSDAY:
            return "星期四";
        case Calendar.FRIDAY:
            return "星期五";
        case Calendar.SATURDAY:
            return "星期六";
        default:
            return "星期日";
        }
    }

    /**
     * @Title:getDaysListBetweenDates
     * @Description: 獲得兩個日期之間的連續日期.
     * @param begin
     *            開始日期 .
     * @param end
     *            結束日期 .
     * @return
     * @return List<String>
     */
    public static List<String> getDaysListBetweenDates(String begin, String end) {
        List<String> dateList = new ArrayList<String>();
        Date d1;
        Date d2;
        try {
            d1 = DateUtils.parseDate(begin, DATE_FORMAT);
            d2 = DateUtils.parseDate(end, DATE_FORMAT);
            if (d1.compareTo(d2) > 0) {
                return dateList;
            }
            do {
                dateList.add(DateFormatUtils.format(d1, DATE_FORMAT));
                d1 = DateUtils.addDays(d1, 1);
            } while (d1.compareTo(d2) <= 0);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return dateList;
    }

    /**
     * @Title:getMonthsListBetweenDates
     * @Description: 獲得連續的月份
     * @param begin
     * @param end
     * @return
     * @return List<String>
     */
    public static List<String> getMonthsListBetweenDates(String begin, String end) {
        List<String> dateList = new ArrayList<String>();
        Date d1;
        Date d2;
        try {
            d1 = DateUtils.parseDate(begin, DATE_FORMAT);
            d2 = DateUtils.parseDate(end, DATE_FORMAT);
            if (d1.compareTo(d2) > 0) {
                return dateList;
            }
            do {
                dateList.add(DateFormatUtils.format(d1, MONTH_FORMAT));
                d1 = DateUtils.addMonths(d1, 1);
            } while (d1.compareTo(d2) <= 0);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return dateList;
    }

    /**
     * @Title:long2Time
     * @Description: 將long型別的時間值轉換成標準格式的時間(yyyy-MM-dd HH:mm:ss)
     * @param createTime
     * @return
     * @return String
     */
    public static String long2Time(String createTime) {
        long fooTime = Long.parseLong(createTime) * 1000L;
        return DateFormatUtils.format(fooTime, TIME_FORMAT);
    }

    public static void main(String[] args) throws ParseException {
        System.out.println(getMonthFirstDay());
        System.out.println(getMonthLastDay());
        System.out.println(getPreviousMonthFirst());
        System.out.println(getPreviousMonthEnd());
        System.out.println(getNextMonthFirst());
        System.out.println(getNextMonthEnd());
        System.out.println(getCurrentMonthDays());
        System.out.println(getSpecifiedMonthDays("1900-02"));
        System.out.println(getCurrentDate());
        System.out.println(getOffsetDate(-4));
        System.out.println(isLeapYear(1900));
        System.out.println(getWeekDay(Calendar.getInstance()));
        System.out.println(getDaysListBetweenDates("2012-1-12", "2012-1-21"));
        System.out.println(getMonthsListBetweenDates("2012-1-12", "2012-3-21"));
        System.out.println(getSpecifiedOffsetTime("2012-09-09 12:12:12", 12));
        System.out.println(getOffsetDateTime("2012-09-09", 12));
        System.out.println(getOffsetDateTime("2012-09-09 12:12:12", 12));
        System.out.println(long2Time("1234567890"));

    }
}

相關推薦

Java基於apache.commons.lang日期工具簡單封裝

package cn.lettleprincess.util; import java.text.ParseException; import java.util.ArrayList; import java.util.Calendar; import java.util

日期工具 DateUtils(繼承org.apache.commons.lang.time.DateUtils

/** * */ package com.dsj.gdbd.utils.web; import org.apache.commons.lang3.time.DateFormatUtils; import java.text.ParseException; import java.

org.apache.commons.lang3.StringUtils工具常用方法

在開發中,Apache 的 StringUtils 工具類有許多方法比 jdk 實現的方便許多。所有整理了幾個常用的: import org.apache.commons.lang3.StringUtils; public class StringUtilsTest {

Apache Commons包 StringUtils工具深入整理

字串是在程式開發中最常見的,Apache Commons開源專案在org.apache.commons.lang3包下提供了StringUtils工具類,該類相當於是對jdk自帶的String類的增強,主要做了幾方面的處理: 1.核心設計理念就是對於null的進行內部處理,使用時不再

commons-lang常用工具StringEscapeUtils

1.escapeSql 提供sql轉移功能,防止sql注入攻擊,例如典型的萬能密碼攻擊' ' or 1=1 ' 'StringBuffer sql = new StringBuffer("select key_sn,remark,create_date from tb_sel

org.apache.commons.beanutils.BeanUtils 工具詳解

1、建立User類 package com.kd.zhouyuan.entity; import java.util.Arrays; import java.util.HashMap; import java.util.Map; public class User {pri

Lucene5學習之LuceneUtils工具簡單封裝

週六花了整整一下午,將Lucene5中有關索引的常見操作進行了簡單封裝,廢話不多說,上程式碼: package com.yida.framework.lucene5.util; import java.io.IOException; import java.util.c

Redis儲存快取工具簡單封裝

一、公共實體類 (1)User.java package cn.xiyou.entity; import java.io.Serializable; /** * User實體 * * @author XIOAHU * */ publi

LuceneUtils工具簡單封裝

週六花了整整一下午,將Lucene5中有關索引的常見操作進行了簡單封裝,廢話不多說,上程式碼:package com.yida.framework.lucene5.util; import java.io.IOException; import java.util.concurrent.ExecutorSe

Android APP更新下載工具——簡單封裝DownloadManager

幾乎所有APP都包含了檢查更新功能,更新下載功能的實現方式常用的有兩種:1、使用App網路框架的檔案下載請求;2、使用自帶的DownloadManager類;本文介紹第二種,簡單封裝一下DownloadManager進行下載更新。重要宣告:本文嚴格意義上來說並非原創,參考了

Bag集合工具apache-commons-collections3.2工具包)在java中的使用

 Bag 是在 org.apache.commons.collections 包中定義的介面 ,也是集合的一種擴充工具類,當然結合用JDK中的map類進行相應的邏輯處理,也能實現Bag類的功能,但

org.apache.commons.lang.StringUtils(StringUtils工具的常用方法)

工作容易遇到的: 必須要8位,不夠的就拿0去補 System.out.println(StringUtils.leftPad("34", 8, "0")); // 00000034 又或者你需要在一個數組中加入一個元素,你可以這麼做: 把數組裡的字串用:連線 S

字串工具 org.apache.commons.lang.StringUtils

//null 和 “”操作~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //判斷是否Null 或者 “” System.out.println(StringUtils.isEmpty(null)); System.out.printl

Java日期工具

multipl efault 簡體中文 類型 分鐘 sub dateutil 表示 exception public class DateUtil { //默認顯示日期的格式 public static final String DATAFORMAT_ST

java日期工具DATE

 java日期工具類 import java.text.SimpleDateFormat; import java.util.*; public class DateUtil { /** * 獲取SimpleDateFormat * @param parttern 日

SimpleDateFormatUtils-java日期工具

寫了個日期工具類 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /** * 格式化日期的工具類 * @author * */ public

關於找不到org/apache/commons/lang/xwork/StringUtils的問題

blog http html 兩個 ack style 引用 utils 有一個 在替換最新版的 struts2包的解決過程中。遇到 找不到這兩個包org/apache/common

java工具-日期工具

1、獲得時間戳 為了統一其他語言的如php和unix系統獲取的時間戳是10位長度的,精確到秒。 java時間戳長度是13位,精確到毫秒 我們獲取時間戳需要相應處理。 //獲取當前時間戳,除以1000,獲取到長度為10位的,精確到秒 public s

java時間日期工具

package com.bigname.common; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date;

java.lang.ClassNotFoundException:org.apache.commons.lang.text.StrLookup

日誌資訊:2018-05-24 09:18:19.605 [main] ERROR org.springframework.boot.SpringApplication - Application startup failed org.springframework.