Java Calendar类获取某个月份第一天及最后一天

在Java日常开发中,不可避免的会碰到对时间处理的需求,JDK为我们提供了对应的类来进行处理。Calendar类是一个很好用的工具。Calendar类是一个抽象的类,故不可使用new关键字对其进行实例化操作

Java Calendar类获取某个月份第一天及最后一天_第1张图片

该类提供了getInstance()方法来进行实例化的操作。

Java Calendar类获取某个月份第一天及最后一天_第2张图片

日常开发中往往会有这样的一个需求:有一个查询,是以月份作为查询条件的,但数据库中保存的数据是单位是天,这时候我们查询某个月份的数据的时候,就需要从这个月的第一天作为起始的日期,最后一天作为终止的日期来进行数据抽取。那么如何获取到形如201902这样月份的第一天和最后一天呢?具体可参看以下代码

package com.janewe.test;

import org.junit.Before;
import org.junit.Test;

import java.text.SimpleDateFormat;
import java.util.Calendar;

/**
 * @Description: 常用日期类
 * @Author: Janewe
 * @Date: 2019/2/26 15:27
 */
public class CalendarTest {

    Calendar calendar = null;
    SimpleDateFormat format = null;

    String v_month = "201902";
    int year = Integer.valueOf(v_month.substring(0, 4));
    int month = Integer.valueOf(v_month.substring(4, 6));

    /**
     * 被@Before注解标识的方法会在@Test注解标识的方法运行之前运行
     */
    @Before
    public void test() {
        calendar = Calendar.getInstance();
        format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    }

    /**
     * 获取calendar中的基本信息,包括年月日时分秒等
     */
    @Test
    public void test1() {
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH);
        int day_of_month = calendar.get(Calendar.DAY_OF_MONTH) + 1; //月份是从0开始的,一月的值是0,二月的值是1,以此类推
        int hour = calendar.get(Calendar.HOUR_OF_DAY);//二十四小时制 Calendar.HOUR为十二小时制
        int minute = calendar.get(Calendar.MINUTE);
        int second = calendar.get(Calendar.SECOND);

        System.out.println(year + "年" + month + "月" + day_of_month + "日" + hour + "时" + minute + "分" + second + "秒");

        String date = format.format(calendar.getTime());
        System.out.println(date);
    }

    /**
     * 获取某个月份的第一天
     */
    @Test
    public void test2() {
        calendar.set(year, month - 1, 1);

        String firstDayOfMonth = format.format(calendar.getTime());

        System.out.println(firstDayOfMonth);
    }

    /**
     * 获取某个日期的最后一天
     */
    @Test
    public void test3() {
        calendar.set(year, month, 1);//这里先设置要获取月份的下月的第一天
        calendar.add(Calendar.DATE, -1);//这里将日期值减去一天,从而获取到要求的月份最后一天

        String lastDayOfMonth = format.format(calendar.getTime());

        System.out.println(lastDayOfMonth);
    }
}

对于Calendar类我们可以灵活运用,以达到我们的需求。以上不足之处望批评指正。

你可能感兴趣的:(Java)