1. 程式人生 > 其它 >獲取指定年月的第一天與最後一天

獲取指定年月的第一天與最後一天

package com.utils;

import java.util.*;
import java.text.SimpleDateFormat;

public class DateUtil {

    /**
     * 獲取指定年月的第一天
     * @param ym yyyy-MM
     * @return
     */
    public static String getFirstDayOfMonth(String ym) {
        String arr[] = ym.split("-");

        int year = Integer.parseInt(arr[0]);
        int month = Integer.parseInt(arr[1]);

        Calendar cal = Calendar.getInstance();
        //設定年份
        cal.set(Calendar.YEAR, year);

        //設定月份
        cal.set(Calendar.MONTH, month - 1);
        //獲取某月最小天數
        int firstDay = cal.getMinimum(Calendar.DATE);
        //設定日曆中月份的最小天數
        cal.set(Calendar.DAY_OF_MONTH, firstDay);
        //格式化日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        return sdf.format(cal.getTime());
    }

    /**
     * 獲取指定年月的最後一天
     * @param ym
     * @return
     */
    public static String getLastDayOfMonth(String ym) {
        String arr[] = ym.split("-");

        int year = Integer.parseInt(arr[0]);
        int month = Integer.parseInt(arr[1]);

        Calendar cal = Calendar.getInstance();
        //設定年份  
        cal.set(Calendar.YEAR, year);
        //設定月份  
        cal.set(Calendar.MONTH, month - 1);
        //獲取某月最大天數
        int lastDay = cal.getActualMaximum(Calendar.DATE);
        //設定日曆中月份的最大天數  
        cal.set(Calendar.DAY_OF_MONTH, lastDay);
        //格式化日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        return sdf.format(cal.getTime());
    }

    public static void main(String[] args) {
        System.out.println(getFirstDayOfMonth("2019-01"));
        System.out.println(getLastDayOfMonth("2019-01"));
    }
}