Java中的日期类主要包括:Date类和Calendar类,本文中将对Calendar类进行讲解。

一、Calendar类的简介

Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,只需要使用getInstance方法创建即可。

二、Calendar类中的常用字段

  • YEAR 年份
  • MONTH 月份
  • DATE 日期
  • WEEK_OF_YEAR 当前年中的第几个星期
  • WEEK_OF_MONTH 当前月中的第几个星期
  • DAY_OF_YEAR 一年中的第几天
  • DAY_OF_MONTH 一个月中的第几天
  • DAY_OF_WEEK 一个星期中的第几天
  • HOUR 12小时制的小时
  • HOUR_OF_DAY 24小时制的小时
  • MINUTE 分钟
  • SECOND 秒
  • MILLISECOND 毫秒

代码实例1

获取时间get()

// 创建Calendar对象
Calendar cal = Calendar.getInstance();
System.out.println("当前时间: " + cal.getTime());/* 时间的获取 */
int year = cal.get(Calendar.YEAR);  // 年份
int month = cal.get(Calendar.MONTH) + 1;  // 月份(月份0代表1月)
int date = cal.get(Calendar.DATE);  // 日期,年月日中的日,同DAY_OF_MONTH
int week_of_year = cal.get(Calendar.WEEK_OF_YEAR);  // 第几个星期/年
int week_of_month = cal.get(Calendar.WEEK_OF_MONTH);  // 第几个星期/月
int day_of_year = cal.get(Calendar.DAY_OF_YEAR);  // 第几天/年
int day_of_month = cal.get(Calendar.DAY_OF_MONTH);  // 第几天/月
int day_of_week = cal.get(Calendar.DAY_OF_WEEK);  // 第几天/星期
int hour = cal.get(Calendar.HOUR);  // 小时,12小时制
int hour_of_day = cal.get(Calendar.HOUR_OF_DAY);  // 小时,24小时制
int minute = cal.get(Calendar.MINUTE);  // 分钟
int second = cal.get(Calendar.SECOND);  // 秒
int millisecond = cal.get(Calendar.MILLISECOND);  // 毫秒System.out.println("年份,YEAR: " + year);
System.out.println("月份,MONTH: " + month);
System.out.println("日期,DATE: " + date);
System.out.println("第几个星期/年,WEEK_OF_YEAR: " + week_of_year);
System.out.println("第几个星期/月,WEEK_OF_MONTH: " + week_of_month);
System.out.println("第几天/年,DAY_OF_YEAR: " + day_of_year);
System.out.println("第几天/月,DAY_OF_MONTH: " + day_of_month);
System.out.println("第几天/星期,DAY_OF_WEEK: " + day_of_week);
System.out.println("小时,12小时制,HOUR: " + hour);
System.out.println("小时,24小时制,HOUR_OF_DAY: " + hour_of_day);
System.out.println("分钟,MINUTE: " + minute);
System.out.println("秒,SECOND: " + second);
System.out.println("毫秒,MILLISECOND: " + millisecond);

输出结果1

三、修改时间

  • set()
  • add():add方法会产生其他相关时间属性的连动变化
  • roll():roll方法只是对相应时间属性的域内做变化

代码实例2

/* 时间的修改 */
// set()
System.out.println("修改前的年份,YEAR: " + cal.get(Calendar.YEAR));
cal.set(Calendar.YEAR, 2019);   // 年份
System.out.println("修改后的年份,YEAR: " + cal.get(Calendar.YEAR));// add()
System.out.println("修改前的月(月份0代表1月),MONTH: " + cal.get(Calendar.MONTH));
cal.add(Calendar.MONTH, 4);  // 月份(月份0代表1月)
System.out.println("修改后的月(月份0代表1月),MONTH: " + cal.get(Calendar.MONTH));// roll()
System.out.println("修改前的日期,Date: " + cal.get(Calendar.DATE));
cal.roll(Calendar.DATE, 10);
System.out.println("修改后的日期,Date: " + cal.get(Calendar.DATE));

输出结果2 

四、add()和roll()的区别

  • add()方法会产生其他相关时间属性的连动变化
  • roll()只是对相应时间属性的域内做变化

代码实例3

// add() 和 roll() 的区别
System.out.println("修改前的日期: " + cal.getTime());
cal.add(Calendar.MONTH, 12);  // 月份(月份0代表1月)
System.out.println("修改后的日期: " + cal.getTime());System.out.println("修改前的日期: " + cal.getTime());
cal.roll(Calendar.MONTH, 12);  // 月份(月份0代表1月)
System.out.println("修改后的日期: " + cal.getTime());

输出结果3

add():修改前的日期:2019.9.12,添加了12个月后,日期改为:2020.9.12

roll():修改前的日期:2020.9.12,添加了12个月后,日期依旧是2020.9.12

五、代码

import java.util.Calendar;public class Day11 {public static void main(String[] args){// 创建Calendar对象Calendar cal = Calendar.getInstance();System.out.println("当前时间: " + cal.getTime());/* 时间的获取 */int year = cal.get(Calendar.YEAR);  // 年份int month = cal.get(Calendar.MONTH) + 1;  // 月份(月份0代表1月)int date = cal.get(Calendar.DATE);  // 日期,年月日中的日,同DAY_OF_MONTHint week_of_year = cal.get(Calendar.WEEK_OF_YEAR);  // 第几个星期/年int week_of_month = cal.get(Calendar.WEEK_OF_MONTH);  // 第几个星期/月int day_of_year = cal.get(Calendar.DAY_OF_YEAR);  // 第几天/年int day_of_month = cal.get(Calendar.DAY_OF_MONTH);  // 第几天/月int day_of_week = cal.get(Calendar.DAY_OF_WEEK);  // 第几天/星期int hour = cal.get(Calendar.HOUR);  // 小时,12小时制int hour_of_day = cal.get(Calendar.HOUR_OF_DAY);  // 小时,24小时制int minute = cal.get(Calendar.MINUTE);  // 分钟int second = cal.get(Calendar.SECOND);  // 秒int millisecond = cal.get(Calendar.MILLISECOND);  // 毫秒System.out.println("年份,YEAR: " + year);System.out.println("月份,MONTH: " + month);System.out.println("日期,DATE: " + date);System.out.println("第几个星期/年,WEEK_OF_YEAR: " + week_of_year);System.out.println("第几个星期/月,WEEK_OF_MONTH: " + week_of_month);System.out.println("第几天/年,DAY_OF_YEAR: " + day_of_year);System.out.println("第几天/月,DAY_OF_MONTH: " + day_of_month);System.out.println("第几天/星期,DAY_OF_WEEK: " + day_of_week);System.out.println("小时,12小时制,HOUR: " + hour);System.out.println("小时,24小时制,HOUR_OF_DAY: " + hour_of_day);System.out.println("分钟,MINUTE: " + minute);System.out.println("秒,SECOND: " + second);System.out.println("毫秒,MILLISECOND: " + millisecond);/* 时间的修改 */// set()System.out.println("修改前的年份,YEAR: " + cal.get(Calendar.YEAR));cal.set(Calendar.YEAR, 2019);   // 年份System.out.println("修改后的年份,YEAR: " + cal.get(Calendar.YEAR));// add()System.out.println("修改前的月(月份0代表1月),MONTH: " + cal.get(Calendar.MONTH));cal.add(Calendar.MONTH, 4);  // 月份(月份0代表1月)System.out.println("修改后的月(月份0代表1月),MONTH: " + cal.get(Calendar.MONTH));// roll()System.out.println("修改前的日期,Date: " + cal.get(Calendar.DATE));cal.roll(Calendar.DATE, 10);System.out.println("修改后的日期,Date: " + cal.get(Calendar.DATE));// add() 和 roll() 的区别System.out.println("修改前的日期: " + cal.getTime());cal.add(Calendar.MONTH, 12);  // 月份(月份0代表1月)System.out.println("修改后的日期: " + cal.getTime());System.out.println("修改前的日期: " + cal.getTime());cal.roll(Calendar.MONTH, 12);  // 月份(月份0代表1月)System.out.println("修改后的日期: " + cal.getTime());}
}

Java学习笔记——Calendar类相关推荐

  1. JAVA学习笔记(类的学习)

    JAVA学习笔记(类的学习) 类声明和类体 构造方法和对象创建 对象的引用和实体 成员变量 方法 方法重载 关键字this 包 import语句 访问权限 对象数组 反编译和文档生成器 JAR文件 1 ...

  2. Java学习笔记1——类和对象

    面向对象 对象:万物皆对象 面向对象 类:模子,属性+方法,类是对象的类型,是具有相同属性和方法的一组对象的集合 对象属性:对象拥有的各种特征,"对象有什么" 对象方法:对象执行的 ...

  3. Java学习笔记_类和对象

    ·类:是一组相关属性和行为的集合,可以看成是一类事务的模板,使用事物的属性特征和行为特征来描述该类事物. ·属性:该事物的状态信息 ·行为:就是该事物能够做什么 ·对象:一类事物的具体体现,对象是类的 ...

  4. Head First Java学习笔记(2):类与对象

    类 1.类是定义同一类所有对象的变量和方法的蓝图或原型. 2.实例变量的值由类的每个实例提供.当创建类的实例时,就创建了这种类型的一个对象,然后系统为类定义的实例变量分配内存.然后可以调用对象的实例方 ...

  5. Java学习笔记——常用类

    字符串相关见string 包装类(Wrapper Class):lang包 将基本数据类型转换成对象 除char->Character,int->Integer,别的首字母大写 以Inte ...

  6. Java学习笔记——Number类

    目录 ​ 一.xxxValue() 二.compareTo() 三.equals() 四.valueOf() 五.toString() 六.parsexxx() 七.代码 Java中的抽象类Numbe ...

  7. Java学习笔记----File类与IO流

    第五章:File类与IO流 第一节:File类 1.1 概述 java.io.File类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作 Java把电脑中的文件和文件夹(目录) ...

  8. Java学习笔记——实体类(ENTITY,VO,DTO,BO)

    最近在写代码的时候,对于Entity.VO.DTO.BO的概念有些混淆,不太了解具体的用途以及作用,所以想梳理一下. 阿里巴巴Java开发手册中的分层领域模型规约: DO(Data Object):此 ...

  9. Java学习笔记——Scanner类

    目录 一.Scanner类的简介 二.Scanner类的常用方法 (一)nextxxx() (二)hasNextxxx() 三.代码 一.Scanner类的简介 Scanner类主要用于扫描用户从控制 ...

最新文章

  1. windows下查看当前进程,杀掉进程等
  2. [ML]--梯度下降 GD 的理解和探究
  3. 论如何学习一门编程语言
  4. PL/Sql Dev 调试Oracle存储过程、触发器、函数
  5. html代码class=,css class是啥?
  6. quot;luasql.mysqlquot;_解决mysqlquot;Access denied for user 'root'@'IP地址'quot;问题 - - ITeye博客...
  7. Nginx upstream (一) 整体流程分析
  8. iView 一周年了,同时发布了 2.0 正式版,但这只是开始...
  9. 2017 Multi-University Training Contest - Team 7:1011. Kolakoski(模拟)
  10. Linux系统常用命令(一)
  11. 正确地使用“respectively“
  12. 巧妇居家过日子的妙招
  13. 智能驾驶是什么意思_新手们的“必备”功能!解读DiPilot智能驾驶辅助系统
  14. java 农历_java怎么取得农历的节日
  15. Vue面试题你学会了吗
  16. 计算机无线传输的标准,2015计算机三级网络技术考试重点:无线网络
  17. JAVA-File类与IO流
  18. wireshark数据包过滤
  19. AIoT人工智能物联网
  20. win10 设定计划任务时提示所指定的账户名称无效,如何解决?

热门文章

  1. HTML+CSS画圆、半圆、扇形、三角形
  2. 微软拼音输入法 2010 Beta 1 发布
  3. windows7 显卡驱动下载地址
  4. hot编码 字符one_几种实现one-hot编码的方式
  5. html5 player not found mac,为什么我安装的jw 提示Error loading player: HTML5 player not found...
  6. Go1.18 新特性:引入新的 netip 网络库
  7. 40岁遭遇中年危机:好不容易熬到公司中层,月薪一万五,却突然被辞退,怎么办?...
  8. 奖金不兑现,我该怎么办
  9. 《神奇宝贝》99%的90后都看过吧?Python让我成为了一名训练师!去吧,皮卡丘!
  10. 程序员去大公司面试,java分布式面试题