Java Calendar日历类原理及使用方法

 更新时间:2019年12月18日 10:56:51   作者:我的脚印  
这篇文章主要介绍了Java Calendar日历类原理及使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了Java Calendar日历类原理及使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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

1

获取方式

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)+"日");
  }
}

代码执行后的结果

2

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) + "日");

  }
}

代码执行后的结果

3

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) + "日");
  }
}

代码执行后的结果

4

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);
  }
}

代码执行后的结果

5

注意事项

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • jmeter添加自定函数的实例(jmeter5.3+IntelliJ IDEA)

    jmeter添加自定函数的实例(jmeter5.3+IntelliJ IDEA)

    这篇文章主要介绍了jmeter添加自定函数的实例(jmeter5.3+IntelliJ IDEA),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • java类与对象案例之打字游戏

    java类与对象案例之打字游戏

    这篇文章主要为大家详细介绍了java类与对象案例之打字游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • Spring中@Configuration注解和@Component注解的区别详解

    Spring中@Configuration注解和@Component注解的区别详解

    这篇文章主要介绍了Spring中@Configuration注解和@Component注解的区别详解,@Configuration 和 @Component 到底有何区别呢?我先通过如下一个案例,在不分析源码的情况下,小伙伴们先来直观感受一下这两个之间的区别,需要的朋友可以参考下
    2023-09-09
  • spring boot中controller的使用及url参数的获取方法

    spring boot中controller的使用及url参数的获取方法

    这篇文章主要介绍了spring boot中controller的使用及url参数的获取方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-01-01
  • java使用sigar 遇到问题的快速解决方法

    java使用sigar 遇到问题的快速解决方法

    下面小编就为大家带来一篇java使用sigar 遇到问题的快速解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • SpringBoot整合Redis的步骤

    SpringBoot整合Redis的步骤

    这篇文章主要介绍了SpringBoot整合Redis的步骤,帮助大家更好的理解和使用springboot框架,感兴趣的朋友可以了解下
    2020-11-11
  • Java 单例模式的实现资料整理

    Java 单例模式的实现资料整理

    这篇文章主要介绍了Java 单例模式的实现的相关资料,并附简单实例代码,需要的朋友可以参考下
    2016-10-10
  • Mybatis 实现打印sql语句的代码

    Mybatis 实现打印sql语句的代码

    这篇文章主要介绍了Mybatis 实现打印sql语句的代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • JavaWeb验证码校验功能代码实例

    JavaWeb验证码校验功能代码实例

    这篇文章主要介绍了JavaWeb验证码校验功能代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Java中使用辗转相除法求最大公约数

    Java中使用辗转相除法求最大公约数

    这篇文章主要介绍了Java中使用辗转相除法求最大公约数,本文直接给出代码实例,需要的朋友可以参考下
    2015-05-05

最新评论