Java API之Calendar(日历)类[详解]

2023-10-29

Calendar(日历)类

一.Calendar概述

  • 位于java.util.Caleandar包中

  • 是一个抽象基类,用于完成日期字段之间相互转换的功能

  • 由于是抽象类型,因此不可直接实例化(不能new 对象)

  • 一个Caleandar类的实例是系统时间的抽象表示

  • static Calendar getInstance 使用默认时区和环境获得一个日历

二.如何实例化?

两种方式:

1.创建其子类(GregorianCaleandar)对象

//创建子类(GergorianCalendar)对象
        Calendar calendar1 = new GregorianCalendar();
        System.out.println(calendar1);

2.调用其静态方法getInstance()

//调用getInstance()方法
        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar);
  • getInstance()方法底层还是通过调用GregorianCaleandar来new一个对象

  • 因此两种方法本质上相同,只不过第二种方法更便于记忆,也更常用

三.常用方法示例

①.get() //用来获取常用属性信息  

 int days = calendar.get(Calendar.DAY_OF_MONTH);   //获取本月的第几天
        System.out.println(days);
        System.out.println(calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));     //获取今天是本月的第几周
        System.out.println(calendar.get(Calendar.DAY_OF_YEAR));     //获取今年的第几天

②.set() //用来设置属性

        calendar.set(Calendar.DAY_OF_MONTH,15);    //设置今天为本月的第15天
        int day1 = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(day1);    //结果为:15

③.add() //用来增添属性值(体现可变性)

        calendar.add(Calendar.DAY_OF_MONTH,6);    //在原有时间基础上增加相应的天数
        int day2 = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(day2);    //由于上面设置时间为15号,所以在15的基础上增加6天,变为21,体现了Caleandar类的可变性

④getTime() //例如用于将日历类的对象转换为Date类

        Date date1 = Calendar.getInstance().getTime();
        System.out.println(date1);   //结果为:Thu Nov 25 21:40:15 CST 2021

⑤setTime() //例如用于将Date类的对象转换为日历类

        Calendar.getInstance().setTime(date1);
        int day3 = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(day3);    //结果为:21

注意点:

  • 获取月份时: 一月为0,二月为1,以此类推

  • 获取星期时: 周天为1,周一为2,以此类推

四.Calendar类的缺点

  • 由于是用abstract修饰的抽象类,所以无法直接创建对象,需创建子类的对象或调用静态方法getInstance()来间接实例化

  • Calendar类存在可变性,即可对属性进行修改

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java API之Calendar(日历)类[详解] 的相关文章

随机推荐

  • 【Redis 6】缓存穿透、缓存雪崩、缓存击穿(附解决方案、代码)

    各位小伙伴们大家好 欢迎来到这个小扎扎的Redis 6专栏 在这个系列专栏中我对B站黑马的Redis教程进行一个总结 鉴于 看到就是学到 学到就是赚到 精神 这波依然是血赚 O Redis知识点速览 缓存穿透 原理以及解决方案 缓存空对象代
  • Redis入门

    1 前言 1 1 什么是Redis Redis是一个基于内存的key value结构数据库 Redis 是互联网技术领域使用最为广泛的存储中间件 它是 Remote Dictionary Service 的首字母缩写 也就是 远程字典服务
  • 断言(Assert)的用法

    一 概念 编写代码时 我们总是会做出一些假设 断言就是用于在代码中捕捉这些假设 可以将断言看作是异常处理的一种高级形式 使用断言可以创建更稳定 品质更好且不易于出错的代码 当需要在一个值为FALSE时中断当前操作的话 可以使用断言 单元测试
  • 二进制间距

    二进制间距 给定一个正整数 n 找到并返回 n 的二进制表示中两个 相邻 1 之间的 最长距离 如果不存在两个相邻的 1 返回 0 如果只有 0 将两个 1 分隔开 可能不存在 0 则认为这两个 1 彼此 相邻 两个 1 之间的距离是它们的
  • MySQL创建S,P,J,SPJ表,以及SQL语句

    MySQL创建S P J SPJ表 CREATE TABLE S SNO char 9 primary key SNAME char 9 STATUS char 9 CITY char 9 CREATE TABLE P PNO char 9
  • Linux休眠,挂起,待机,关机的区别及相关命令

    转 http blog 163 com kukwkukw 126 blog static 97095900201410672425693 体眠是一种更加省电的模式 它将内存中的数据保存于硬盘中 所有设备都停止工作 当再次使用时需按开关机键
  • 一文读懂深度学习框架下的目标检测(附数据集)

    从简单的图像分类到3D位置估算 在机器视觉领域里从来都不乏有趣的问题 其中我们最感兴趣的问题之一就是目标检测 如同其他的机器视觉问题一样 目标检测目前为止还没有公认最好的解决方法 在了解目标检测之前 让我们先快速地了解一下这个领域里普遍存在
  • 整理的最全 python常见面试题(基本必考)① ②③④⑤⑥⑦⑧⑨⑩

    1 大数据的文件读取 利用生成器generator 迭代器进行迭代遍历 for line in file 2 迭代器和生成器的区别 答 1 迭代器是一个更抽象的概念 任何对象 如果它的类有next方法和iter方法返回自己本身 对于stri
  • Vim进阶

    Vim实用技术 第1部分 实用技巧 http www ibm com developerworks cn linux l tip vim1 index html Vim实用技术 第2部分 常用插件 http www ibm com deve
  • 软件测试13个最容易犯的错误

    目录 一 输入框测试 二 搜索功能测试 三 添加 修改功能 四 删除功能 五 上传图片功能测试 六 查询结果列表 七 返回键检查 八 回车键检查 九 刷新键检查 十 直接URL链接检查 盗链问题 十一 并发问题 十二 业务流程测试 十三 界
  • nvme分区选mbr还是guid_Linux 扩容 / 根分区(LVM+非LVM)

    目录 1 概述 2 CentOS7 LVM根分区扩容步骤 3 CentOS7 非LVM根分区扩容步骤 一 背景 概述 MBR Master Boot Record 主引导记录 和GPT GUID Partition Table GUID意为
  • 和泉纱雾

    和泉纱雾 Time Limit 1000 ms Memory Limit 65536 KiB Submit Statistic Problem Description 众所周知 和泉纱雾是著名的埃罗芒阿老师 画画功力首屈一指 今天我们的埃罗
  • 长度大小为零的数组(柔性数组、可变数组)

    书山有路勤为径 学海无涯苦作舟 目录 前言 一 什么是柔性数组 二 柔性数组应用及优势对比 1 定长数组 2 指针域 3 柔性数组 总结 前言 柔性数组 Arrays of Length Zero 是GNU GCC在C C 标准下扩展而引出
  • 网络测速命令

    linux命令行测速 https blog 51cto com 13718210 2418661
  • C语言课程设计-工资管理系统

    前言 这个程序是博主在大学第一个学期学完C语言后的课程设计 那时刚从一个小白变得会一点点编程 老师就布置了这个课程设计 当时一脸懵这是啥 我在哪 我要干什么 但是通过查阅了很多资料以及问了许多人以后 我逐渐开始写我的第一个项目 现在来看这个
  • opencv_gpu加速环境配置教程问题汇总

    1 安装CUDA 1 1 安装的cuda版本与英伟达驱动中的版本必须是一致的 1 2 安装的cuda后必须把cuda的环境配置到系统的环境变量中 1 3 检查cuda安装的版本与英伟达版本是不是一致的 cmd中输入 nvcc V 2 安装o
  • IDEA 怎么自定义代码模板?

    打开idea gt File gt Settings 点击 Editor gt Live Templates 添加组名或组的变量名 输入自己定义的变量名 即可输出代码 点击 Edit variables Expression改为与自己代码需
  • 使用sersync实现数据实时同步

    使用sersync实现数据实时同步 sersync诞生过程 部署前提 配置rsync服务端 部署sersync 配置sersync的path变量 修改sersync配置文件 sersync常用参数 使用服务文件实现开机自启动 实时同步服务d
  • vue中postcss怎么配置

    主要是 postcssrc js中的配置 在进入主题之前先记录下node中读取文件路径的问题 node js中的文件路径主要是包括 dirname filename process cwd 等 前面三个是绝对路径 后面是相对路径 当然你可以
  • Java API之Calendar(日历)类[详解]

    Calendar 日历 类 一 Calendar概述 位于java util Caleandar包中 是一个抽象基类 用于完成日期字段之间相互转换的功能 由于是抽象类型 因此不可直接实例化 不能new 对象 一个Caleandar类的实例是