Calendar类概述

java.util.Calendar 是日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。日历类就是方便获取各个时间属性的。Calendar类无法直接创建对象使用,里边有一个静态方法getInstance(),该方法返回了Calendar类的子类对象。Calendar类中提供很多成员常量,代表给定的日历字段:具体如下图

获取方式

Calendar为抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,返回子类对象,如下:
Calendar静态方法
  • public static Calendar getInstance() :使用默认时区和语言环境获得一个日历
//获取Calendar类的子类对象
Calendar cal = Calendar.getInstance();

常用方法

根据Calendar类的API文档,常用方法有:
  • public int get(int field) :返回给定日历字段的值。
package demo04;

import java.util.Calendar;

public class Demo01 {
    public static void main(String[] args) {
        //通过静态方法创建,返回Calendar子类对象
        Calendar instance = Calendar.getInstance();
        /*
        public int get(int field):返回给定日历字段的值。
        参数:传递指定的日历字段(YEAR,MONTH...)
        返回值:日历字段代表的具体的值
     */
        System.out.print("现在是"+instance.get(Calendar.YEAR)+"年");
        //在Calendar类中,月份的表示是以0-11代表1-12月。
        System.out.print(instance.get(Calendar.MONTH)+"月");
        System.out.println(instance.get(Calendar.DAY_OF_MONTH)+"日");
    }
}

代码执行后的结果

  • public void set(int field, int value) :将给定的日历字段设置为给定值。
package demo04;

import java.util.Calendar;

public class Demo02 {

    /*
       public void set(int field, int value):将给定的日历字段设置为给定值。
       参数:
           int field:传递指定的日历字段(YEAR,MONTH...)
           int value:给指定字段设置的值
    */
    public static void main(String[] args) {
        //使用getInstance方法获取Calendar对象
        Calendar c = Calendar.getInstance();
        //设置年为9999
        c.set(Calendar.YEAR, 9999);
        //设置月为9月
        c.set(Calendar.MONTH, 9);
        //设置日9日
        c.set(Calendar.DATE, 9);
        //获取设置后的日期
        System.out.println("现在的日期是" + c.get(Calendar.YEAR) + "年" + c.get(Calendar.MONTH) + "月" + c.get(Calendar.DAY_OF_MONTH) + "日");
        //同时设置年月日,可以使用set的重载方法
        c.set(8888, 8, 8);
        System.out.println("现在的日期是" + c.get(Calendar.YEAR) + "年" + c.get(Calendar.MONTH) + "月" + c.get(Calendar.DAY_OF_MONTH) + "日");

    }
}

代码执行后的结果

  • public abstract void add(int field, int amount) :根据日历的规则,为给定的日历字段添加或减去指定的时间量。
package demo04;

import java.util.Calendar;

public class Demo03 {
    /*
       public abstract void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
       把指定的字段增加/减少指定的值
       参数:
           int field:传递指定的日历字段(YEAR,MONTH...)
           int amount:增加/减少指定的值
               正数:增加
               负数:减少
    */
    public static void main(String[] args) {
        //使用getInstance方法获取Calendar对象
        Calendar c = Calendar.getInstance();
        //获取当前的日期
        System.out.println("现在的日期是" + c.get(Calendar.YEAR) + "年" + c.get(Calendar.MONTH) + "月" + c.get(Calendar.DAY_OF_MONTH) + "日");
        //把年增加2年
        c.add(Calendar.YEAR, 2);
        //把月份减少3个月
        c.add(Calendar.MONTH, -3);
        //获取设置后的日期
        System.out.println("现在的日期是" + c.get(Calendar.YEAR) + "年" + c.get(Calendar.MONTH) + "月" + c.get(Calendar.DAY_OF_MONTH) + "日");
    }
}

代码执行后的结果

  • public Date getTime() :返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
package demo04;

import java.util.Calendar;
import java.util.Date;
public class Demo04 {
    /*
        public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
        把日历对象,转换为日期对象
     */
    public static void main(String[] args) {
        //使用getInstance方法获取Calendar对象
        Calendar c = Calendar.getInstance();
        //日历对象--->日期对象
        Date date = c.getTime();
        System.out.println(date);
    }
}

代码执行后的结果

注意事项
  • 西方星期的开始为周日,中国为周一。
  • 在Calendar类中,月份的表示是以0-11代表1-2月。
  • 日期是有大小关系的,时间靠后,时间越大。

Java之Calendar类的更多相关文章

  1. Java基础-Calendar类常用方法介绍

    Java基础-Calendar类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Calendar类概念 Calendar 类是一个抽象类,它为特定瞬间与一组诸如 Y ...

  2. Java学习--Calendar 类的应用

    Calendar 类的应用 Date 类最主要的作用就是获得当前时间,同时这个类里面也具有设置时间以及一些其他的功能,但是由于本身设计的问题,这些方法却遭到众多批评,不建议使用,更推荐使用 Calen ...

  3. Java.util.Calendar类

    Java.util.Calendar类 package myProject; import java.text.SimpleDateFormat; import java.util.Calendar; ...

  4. JAVA中Calendar 类的应用

    转自:https://www.imooc.com/code/2340 侵删! Date 类最主要的作用就是获得当前时间,同时这个类里面也具有设置时间以及一些其他的功能,但是由于本身设计的问题,这些方法 ...

  5. Java API —— Calendar类

    1.Calendar类概述  Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR.MONTH.DAY_OF_MONTH.HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段 ...

  6. HDOJ(HDU) 2133 What day is it(认识下Java的Calendar类---日期类)

    Problem Description Today is Saturday, 17th Nov,2007. Now, if i tell you a date, can you tell me wha ...

  7. Java的Calendar类

    通过Date类我们可以创建并格式化一个日期对象,但是如何才能设置和获取日期数据的特定部分呢?----Calendar类 Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,通过getIn ...

  8. java代码Calendar类

    总结:时间类Calendar.类代表当前时 Calendar c=Calendar.getInstance();,,Calendar是抽象类.Calendar的构造方法是私有的,API提供了getIn ...

  9. java:calendar类及一些比较实用的utils(一)

    在java编程中经常会用到时间日期的计算.比较.格式化等等操作,刚开始接触Calendar类时,还是在初学习期间,小小白一枚,看着这个好复杂,懒惰心理作祟也就没有怎么去学习,后来在项目中经常用到,索性 ...

随机推荐

  1. Python如何实现微信群万人同步直播?

    很多人传言微信网页版(https://wx.qq.com/)接口已经被封了,所以所有的微信都不能登录网页版,这是错误的. 2019年7月微信对网页版微信进行了动态安全策略调整,导致一大批微信号不能登录 ...

  2. laravel55

    增//save返回true false$res = new member();res->username = 'a';$res->password = 'b';dump($res-> ...

  3. Error: Cannot find module 'webpack/lib/node/NodeTemplatePlugin'

    在webpack的管理输出的部分,设定HtmlWebpackPlugin部分,运行npm run build 会报错 Error: Cannot find module 'webpack/lib/no ...

  4. SSM(Spring+SpringMVC+Mybatis)框架整合

    1.数据准备 SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `admin` -- - ...

  5. Spring Cloud进阶之路 | 二:服务提供者(discovery)

    1 创建父项目 以前文所述,以spring boot 2.1.7.RELEASE为基,spring cloud版本为Greenwich.SR2,spring cloud alibaba版本为2.1.0 ...

  6. C语言笔记 08_函数指针&回调函数&字符串&结构体&位域

    函数指针 函数指针是指向函数的指针变量. 通常我们说的指针变量是指向一个整型.字符型或数组等变量,而函数指针是指向函数. 函数指针可以像一般函数一样,用于调用函数.传递参数. 函数指针变量的声明: / ...

  7. Python基础-day01-5

    注释 目标 注释的作用 单行注释(行注释) 多行注释(块注释) 01. 注释的作用 使用用自己熟悉的语言,在程序中对某些代码进行标注说明,增强程序的可读性 02. 单行注释(行注释) 以 # 开头,# ...

  8. 浅析 Java 与 C++ 的垃圾回收机制

        Java老师在期末复习大纲上出了一道关于JVM垃圾回收机制的题目,想要我们简述一下JVM垃圾回收机制,与老师交流后,大概老师是希望通过与其他语言在垃圾回收对比,介绍一下Java在这方面的特点和 ...

  9. Mybatis一级缓存、二级缓存详讲

    Mybatis 一级缓存.二级缓存 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 查询缓存 首先,我们先看一下这个标题“查询缓存”,那就说明跟增.删.改是没有任何关联的,只有在查询 ...

  10. c++-多态的学习

    多态的基本介绍 多态基础 面向对象新求 C++编译器提供的多态解决方案 多态意义.多态成立的是三个条件 多态理论基础 多态面试题强化 多态的理解 C++编译器如何实现多态 重载重写重定义 虚析构函数 ...