Java Calendar类使用总结

平时在浏览一些网站时,有些网站会显示出当前时间,如现在是xx年xx月xx日 xx时xx分xx秒,在实际的开发过程中,也会涉及到日期和时间的计算,Java中提供了一个专门的类Calendar来处理日期与时间。

接下来就讲解下Calendar类的使用场景及使用方法。

1.获取Calendar实例

首先,我们看下Calendar类的定义

public abstract class Calendar implements Serializable, Cloneable, Comparable<Calendar>

因为被定义为abstract,所以我们无法通过new来创建Calendar类的实例,不过Calendar类提供了一个类方法getInstance()来返回Calendar的实例。

public static Calendar getInstance()
{
    return createCalendar(TimeZone.getDefault(), Locale.getDefault(Locale.Category.FORMAT));
}

由此,获取Calendar实例的代码如下所示:

Calendar calendar = Calendar.getInstance();

2.获取当前时间

package com.zwwhnly.springbootdemo;

import java.util.Calendar;

public class CalendarDemo {
    public static void main(String[] args) {
        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);
        int hour = calendar.get(Calendar.HOUR_OF_DAY);  // 24小时制
        int minute = calendar.get(Calendar.MINUTE);
        int second = calendar.get(Calendar.SECOND);

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

运行结果:

现在是:2019年2月21日15时36分38秒

注意:月份的下标是从0开始的,即0~11分别代表1~12月

3.设置时间

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

3.1(一起设置):

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

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

3.2(分别设置):

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

4.时间计算

4.1增加秒

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

public static void main(String[] args) {
     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

4.2增加月

首先我们将时间设置为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

注意事项:当所在的月份没有那个日期时,如2月份没有31号,返回的是所在月的最后一天(2月28号)

5.扩展:获取某月的第一天和最后一天

package com.zwwhnly.springbootdemo;

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

6.参考链接

Java中Calendar类的常用方法
Java Calendar类的使用总结
java时间类Date、Calendar及用法

原文地址:https://blog.51cto.com/14209879/2353134

时间: 2024-11-05 11:23:41

Java Calendar类使用总结的相关文章

Java Calendar 类的时间操作

Java Calendar 类的时间操作 标签: javaCalendar时间Date 2013-07-30 17:53 140401人阅读 评论(7) 收藏 举报 分类: 所有(165) Java 算法(24) 版权声明:本文为博主原创文章,未经博主允许不得转载. JavaCalendar 类时间操作,这也许是创建日历和管理最简单的一个方案,示范代码很简单. 演示了获取时间,日期时间的累加和累减,以及比较. 原文地址:blog.csdn.NET/joyous/article/details/9

Java Calendar类简单用法

我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3832307.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验. 初始化 Calendar calendar = new GregorianCalendar(); set方法 calendar.set(Calendar.YEAR, year); get方法 int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);

Java - Calendar类的使用

今天在写代码时需要用到时间相关的类,一开始,数据库中存的数据类型是timestamp的,所以在Java中就使用了 Timestamp类型,但当调用Timestamp类型的方法时发现,它的很多方法都是deprecated,并且运行结果与预期有所差异. Eclipse的自动提示我使用Calendar类来代替Timestamp类的使用. 1 private static void testCalendar() { 2 Timestamp ts = new Timestamp(System.curren

Java Calendar类(java.util包)

Date 类最主要的作用就是获得当前时间,同时这个类里面也具有设置时间以及一些其他的功能,但是由于本身设计的问题,这些方法却遭到众多批评,不建议使用,更推荐使用 Calendar 类进行时间和日期的处理. 运行结果: Calendar 类提供了 getTime() 方法,用来获取 Date 对象,完成 Calendar 和 Date 的转换,还可通过 getTimeInMillis() 方法,获取此 Calendar 的时间值,以毫秒为单位.如下所示: 运行结果:

Java Calendar 类的时间操作.RP

JavaCalendar 类时间操作,这也许是创建和管理日历最简单的一个方案,示范代码很简单. 演示了获取时间,日期时间的累加和累减,以及比较. 原文地址:blog.csdn.NET/joyous/article/details/9630893 注意事项: Calendar 的 month 从 0 开始,也就是全年 12 个月由 0 ~ 11 进行表示. 而 Calendar.DAY_OF_WEEK 定义和值如下: Calendar.SUNDAY = 1 Calendar.MONDAY = 2

整理Java基础知识--Calendar 类

Java Calendar类Calendar 类是 abstract 类 实际使用时实现特定的子类对象 创建一个代表当前日期的Calendar 对象Calendar ss = Calendar.getInstance();Calendar 类对象字段类型 常量 描述 Calendar.YEAR 年 Calendar.MONTH 月 Calendar.DATE 日 Calendar.DAY_OF_MONTH 日期 Calendar.HOUR 12小时制 Calendar.HOUR_OF_DAY 2

Calendar 类的应用

上一篇 说的 Date 类 最主要的作用就是获得当前时间,同事这个类里面也具有设置时间以及一些其他的功能,但是由于本身设计的问题,这些方法却遭到众多的批评,不推荐使用,要推荐使用Calendar 类进行时间和日期的处理. 说到 Calendar 类,当然的引入 Calendar包:java.util.Calendar java.Calendar 类是一个抽象类,可以通过调用 getInstance()静态方法获取一个Calendar 对象,此对象已由当前日期时间初始化,即默认代表当前时间,如 C

Java API —— Calendar类

1.Calendar类概述  Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR.MONTH.DAY_OF_MONTH.HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法. 2.成员方法      public static Calendar getInstance():初始化,返回子类对象 public int get(int field):返回给定日历字段的值 public void add(int field,int am

java类之Calendar类

package com; import java.util.Calendar; /**  * Calendar类概述及方法  *  Calendar类概述:Calendar类是一个抽象类,它为特定瞬间与一组诸如YEAE.MONTH等日历字段之间的转换提供了一些方法,  *  并为操作日历字段提供了一些方法.  *   * 成员方法:  *  public static Calendar getInstance()  *  public int get(int field) 返回给定日历字段的值,