常用操作

new Date()  //  获取时间对象
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")  //  时间格式化
parse()  //  方法,从string到date
format()    //  从date到string
(1000 * 60 * 60 * 24)  //  时间计算,这是一天时间

Calendar

Calendar calendar = Calendar.getInstance();

        int year = calendar.get(Calendar.YEAR);
        // 月份的下标是从0开始的,即0~11分别代表1~12月,因此需要+1
        int month = calendar.get(Calendar.MONTH) + 1;
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        // 24小时制
        int hour = calendar.get(Calendar.HOUR_OF_DAY);
        int minute = calendar.get(Calendar.MINUTE);
        int second = calendar.get(Calendar.SECOND);

        System.out.println("现在是:" + year + "年" + month + "月" + day + "日" + hour + "时" + minute + "分" + second + "秒");

设置时间

假设我们现在需要将时间设置为2019-02-21 23:59:59。

一起设置

Calendar calendar = Calendar.getInstance();
calendar.set(2019, Calendar.FEBRUARY, 21, 23, 59, 59);

System.out.println(calendar.getTime());

分别设置

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 2019);
calendar.set(Calendar.MONTH, Calendar.FEBRUARY);
calendar.set(Calendar.DAY_OF_MONTH, 21);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);

System.out.println(calendar.getTime());

3.1和3.2的运行结果都如下所示:

Thu Feb 21 23:59:59 CST 2019

时间计算

增加秒

我们在3.1的基础上增加1秒,那么时间应该是2019-02-22 00:00:00。

Calendar calendar = Calendar.getInstance();
calendar.set(2019, Calendar.FEBRUARY, 21, 23, 59, 59);
calendar.add(Calendar.SECOND, 1);
System.out.println(calendar.getTime());

运行结果:

Fri Feb 22 00:00:00 CST 2019

增加月

首先我们将时间设置为2019-01-31,然后先增加1个月,再增加2个月,代码如下所示:

Calendar calendar = Calendar.getInstance();

calendar.set(2019, Calendar.JANUARY, 31);
System.out.println(calendar.getTime());
calendar.add(Calendar.MONTH, 1);
System.out.println(calendar.getTime());
calendar.add(Calendar.MONTH, 2);
System.out.println(calendar.getTime());

运行结果:

Thu Jan 31 15:58:03 CST 2019
Thu Feb 28 15:58:03 CST 2019
Sun Apr 28 15:58:03 CST 2019

获取某月的第一天和最后一天

package com.zwwhnly.springbootaction.date;

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

public class CalendarDemo {
    public static void main(String[] args) {
        System.out.println(getFirstDayOfMonth(2019, 2));
        System.out.println(getLastDayOfMonth(2019, 2));

        System.out.println(getFirstDayOfMonth(2019, 3));
        System.out.println(getLastDayOfMonth(2019, 3));
    }

    public static String getLastDayOfMonth(int year, int month) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR, year);
        calendar.set(Calendar.MONTH, month - 1);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DATE));

        return new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime());
    }

    public static String getFirstDayOfMonth(int year, int month) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR, year);
        calendar.set(Calendar.MONTH, month - 1);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getMinimum(Calendar.DATE));

        return new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime());
    }
}

运行结果:

2019-02-01
2019-02-28
2019-03-01
2019-03-31


欢迎欢迎~热烈欢迎~