1. 程式人生 > >根據月份,獲取該月第一天和下個月第一天的Date值

根據月份,獲取該月第一天和下個月第一天的Date值

使用者需求是根據月份來篩選本月的所有資料,前端傳來的是"yyyy-MM"格式的字串,這樣就需要後端處理下,弄成兩個Date去資料庫查詢。由於每個月最後一天不固定,所以想法是用當月第一天和次月第一天去查詢,轉換程式碼如下:

**
 * 時間轉化工具
 * author: wengjiaxin
 * since: 2018/9/4 19:47
 */
public class DateTimeUtils {

    private DateTimeUtils() {
    }

    private static final String FORMAT = "yyyy-MM-dd";

    /**
     * String轉Date型別
     *
     * @param dateStr
     *            時間字串
     * @return Date型別時間
     * @throws Exception
     *             異常
     */
    public static Date string2Date(String dateStr) throws Exception {
        SimpleDateFormat sdf = new SimpleDateFormat(FORMAT);
        if (StringUtils.isNotBlank(dateStr)) {
            return sdf.parse(dateStr);
        }
        return null;
    }

    /**
     * Date轉String
     *
     * @param date
     *            Date型別時間
     * @return 時間字串
     */
    public static String date2String(Date date) {
        SimpleDateFormat sdf = new SimpleDateFormat(FORMAT);
        if (date != null) {
            return sdf.format(date);
        }
        return null;
    }

    /**
     * 獲取指定月份第一天Date
     * @param dateStr yyyy-MM
     * @return Date型別時間
     */
    public static Date getFirstDayByMonth(String dateStr) throws Exception {
        dateStr = dateStr + "-01";
        return string2Date(dateStr);
    }

    /**
     * 獲取指定月份下個月第一天Date
     * @param dateStr
     * @return
     */
    public static Date getNextFirstDayByMonth(String dateStr) throws Exception {
        Date date = getFirstDayByMonth(dateStr);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.MONTH, 1);
        return calendar.getTime();
    }

}