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. 笔记||Python3之字符串格式化输出

    字符串的格式化输出方法一: 常用的字符串格式化符号:%s   ---   用str()函数进行字符串转换 %d   ---   转成有符号十进制数 %f    ---   转成浮点数(小数部分自然截断 ...

  2. 如何在Tomcat服务器配置CGI运行Python

    想通过请求触发部署在tomcat上的非java应用程序,需要用到Common Gateway Interface(CGI).Tomcat提供了Servlet CGI支持. 修改web.xml web. ...

  3. RocketMQ 整合 DLedger(多副本)即主从切换实现平滑升级的设计技巧

    目录 1.阅读源码之前的思考 2.从 Broker 启动流程看 DLedger 2.1 构建 DefaultMessageStore 2.2 增加节点状态变更事件监听器 2.3 调用 DefaultM ...

  4. 常见面试题之*args 和 **kwargs 的使用

    def self_max(*args,**kwargs): print(args) print(kwargs) self_max(1,2,3,4,5,6,7,x=6,y=8,z=80,e=50) 输出 ...

  5. 《Java基础知识》流程控制

    流程控制分类: 一.顺序结构如果没有流程控制(即没有分支结构和循环结构),Java方法里面的语句是一个顺序执行流,从上到下依次执行每条语句. 二.分支结构1.if语句if语句使用布尔表达式或者布尔值作 ...

  6. 利用 DFA 算法实现文字过滤

    一.DEA 算法简介 在实现文字过滤的算法中,DFA是唯一比较好的实现算法. DFA 全称为:Deterministic Finite Automaton,即确定有穷自动机.其特征为:有一个有限状态集 ...

  7. WC集训DAY2笔记 组合计数 part.1

    目录 WC集训DAY2笔记 组合计数 part.1 基础知识 组合恒等式 错排数 卡特兰数 斯特林数 伯努利数 贝尔数 调和级数 后记 补完了几天前写的东西 WC集训DAY2笔记 组合计数 part. ...

  8. SpringMVC生成的验证码图片不显示

    近期用SSM框架写一个项目,登录模块需要生成验证码图片,我把相关的代码写好了之后传到 jsp ,但是图片不显示,查看控制台显示404,反复查询了一下代码并没有发现任何问题,代码如下: @Control ...

  9. SAP B1:水晶报表中用Code128制作条型码的方法

    一.在[文件系统]中新建一个[Fonts文件夹],然后添加[Code128.ttf]文件. 二.在水晶报表里的[字段资源管理器]的[公式字段]中新建一个公式字段.点击[使用编辑器]之后弹出[公式工作室 ...

  10. 分享一个web安全学习站点

    大神建议: https://blog.knownsec.com/Knownsec_RD_Checklist/v3.0.html#FMID_1218170279FM https://websec.rea ...