一、   如何创建 Calendar 对象

Calendar 是一个抽象类, 无法通过直接实例化得到对象. 因此, Calendar 提供了一个方法 getInstance,来获得一个Calendar对象, 得到的 Calendar 由当前时间初始化.

 Calendar cal = Calendar.getInstance();

二、   字段详解

Calendar 中 set 和 get 时间都是通过在参数中填入不同的字段来实现的, 不过有部分字段的常量值与约定俗成的值不相同

下面字段我们以 1998 年 2 月 28 日 23 时 11 分 11 秒 来讲解

 Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 1998);
cal.set(Calendar.MONTH, 1);
cal.set(Calendar.DATE, 28);
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 11);
cal.set(Calendar.SECOND, 11);

1.  YEAR

默认情况下指示为年份.

例子中 YEAR 为 1998

2.  MONTH

指示当前年中的月份数,一年中的一月的值为 0

需要注意的是 JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER 分别与 [0, 11] 对应, 在设置和获取日期时要格外注意

3.  WEEK_OF_YEAR

指示当前年中的星期数. 一年中的第一个星期的值为 1.

例子中 WEEK_OF_YEAR 为 9

4.  WEEK_OF_MONTH

指示当前月中的星期数. 一个月中第一个星期的值为 1.

例子中 WEEK_OF_MONTH 为 5

5.  DAY_OF_MONTH

指示一个月中的某天. 它与 DATE 是同义词. 一个月中第一天的值为 1.

例子中 DAY_OF_MONTH 为 28

6.  DATE

同 DAY_OF_MONTH

7.  DAY_OF_YEAR

指示当前年中的天数. 一年中第一天的值为 1.

例子中 DAY_OF_YEAR 为 59

8.  DAY_OF_WEEK

指示一个星期中的某天, 一周中第一天的值为 1.

需要 注意 的是, 与中国人的习惯不同, 此处一周中的第一天为 周日. 一周的顺序依次为: 周日(1), 周一(2), 周二(3), 周三(4), 周四(5), 周五(6), 周六(7) 在设置和获取日期时要格外注意

9.  AM_PM

指示 HOUR 是在中午之前还是在中午之后. [0, 12) 为上午, AM_PM 值为 1 [12, 24)为下午, AM_PM 值为 0

10.     HOUR

指示上午或下午的小时.

例子中 HOUR 为 11

11.     HOUR_OF_DAY

指示一天中的小时。 HOUR_OF_DAY 用于 24 小时制时钟

例子中 HOUR_OF_DAY 为 23

12.     MINUTE

指示一小时中的分钟

例子中 MINUTE 为 11

13.     SECOND

指示一分钟中的秒

例子中 SECOND 为 11

三、   设置值

 cal.set (2013, 5, 4, 13, 44, 51);//年月日时分秒 (月份0代表1月)
cal.set (Calendar.YEAR, 2014);//年
cal.set (Calendar.MONTH, 7);//月 (月份0代表1月)
cal.set (Calendar.DATE, 11);//日
cal.set (Calendar.HOUR_OF_DAY, 15);//时
cal.set (Calendar.MINUTE, 33);//分
cal.set (Calendar.SECOND, 32);//秒

四、   获取值

 cal.get (Calendar.YEAR);//年
cal.get (Calendar.MONTH) + 1;//月 (必须要+1)
cal.get (Calendar.DATE);//日
cal.get (Calendar.HOUR_OF_DAY);//时
cal.get (Calendar.MINUTE);//分
cal.get (Calendar.SECOND);//秒
cal.get (Calendar.DAY_OF_WEEK);//星期 (Locale.ENGLISH情况下,周日是1,剩下自己推算)

五、   运算值

1.  Add

 cal.add (Calendar.YEAR, 1);//年
cal.add (Calendar.MONTH, 1);//月
cal.add (Calendar.DATE, 1);//日
cal.add (Calendar.HOUR_OF_DAY, -1);//时
cal.add (Calendar.MINUTE, 1);//分
cal.add (Calendar.SECOND, 1);//秒
cal.add (Calendar.DATE, 7);//周

六、  Calendar 对象间的比较

比较两个 Calendar 对象表示的时间值, 如果参数表示的时间等于此 Calendar 表示的时间,则返回 0 值;如果此 Calendar 的时间在参数表示的时间之前,则返回小于 0 的值;如果此 Calendar 的时间在参数表示的时间之后,则返回大于 0 的值。

Java Calender 类详解的更多相关文章

  1. Java String类详解

    Java String类详解 Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,很多时候,我们对它既熟悉又陌生. 类结构: public final ...

  2. Java 枚举类详解

    1. 枚举类定义 在某些情况下,一个类的对象是有限而且固定的,比如季节类,它只有4个对象,这种实例有限而且固定的类,在Java里被称为枚举类. 2. 早期实现枚举的方式 public static f ...

  3. java Random类详解

    java Random类位于java.util包下,主要用来生成随机数,本文详解介绍了Random类的用法,希望能帮到大家 Random类 (java.util) Random类中实现的随机算法是伪随 ...

  4. JAVA - 大数类详解

    写在前面 对于ACMer来说,java语言最大的优势就是BigInteger,Bigdecimal,String三个类. 这三个类分别是高精度整数,高精度浮点数和字符串,之所以说这个是它的优势是因为j ...

  5. Java 枚举类 详解

    1.枚举是什么? Java中的枚举其实是一种语法糖,在 JDK 1.5之后出现,用来表示固定且有限个的对象.比如一个季节类有春.夏.秋.冬四个对象:一个星期有星期一到星期日七个对象.这些明显都是固定的 ...

  6. Java重要类详解之ArrayList类

    https://blog.csdn.net/shengmingqijiquan/article/details/52634640 一.ArrayList概述 ArrayList 是一个数组队列,相当于 ...

  7. 【RTTI】java Class类详解

    RTTI (Run-Time Type Information)运行时类信息 Java的Class类是java反射机制的基础,通过Class类我们可以获得关于一个类的相关信息,下面我们来了解一下有关j ...

  8. Java常用类详解

    目录 1. String类 1.1 String的特性 1.2 String字面量赋值的内存理解 1.3 String new方式赋值的内存理解 1.4 String 拼接字面量和变量的方式赋值 1. ...

  9. JAVA CyclicBarrier类详解

    一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point).在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时CyclicBarrie ...

随机推荐

  1. 【搜索】Fliptile

    #include<stdio.h> #include<stdlib.h> #include<string.h> ; ; typedef long long ll; ...

  2. Alpha 冲刺 (1/10)

    队名 火箭少男100 组长博客 林燊大哥 作业博客 Alpha 冲鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调各成员之间的工作,对多个目标检测及文字识别模型进行评估.实验,选取较 ...

  3. Magpie

    https://github.com/LLNL/magpie Magpie contains a number of scripts for running Big Data software in ...

  4. substr()和substring()函数

    区别:主要是两者的参数不同 功能:相似. substr :返回一个从指定位置开始的指定长度的子字符串 substring :返回位于 String 对象中指定位置的子字符串. 用法: stringva ...

  5. C# 中使用面向切面编程(AOP)中实践代码整洁(转)

    出处:https://www.cnblogs.com/chenug/p/9848852.html 1. 前言 最近在看<架构整洁之道>一书,书中反复提到了面向对象编程的 SOLID 原则( ...

  6. ORACLE 导入的问题

    1.导入报错 我将ORACLE12.2 导出的文件,导入到ORACLE12.1 . IMP-00010: 不是有效的导出文件, 标头验证失败 解决办法: 修改 dmp 文件版本,使用UEDITOR打开 ...

  7. CodeCraft-19 and Codeforces Round #537 (Div. 2) D 多重排列 + 反向01背包 + 离线处理

    https://codeforces.com/contest/1111/problem/D 多重排列 + 反向01背包 题意: 给你一个字符串(n<=1e5,n为偶数),有q个询问,每次询问两个 ...

  8. vba遗传算法之非一致性突变

    http://www.docin.com/p-959323141-f4.html Sub 非一致性变异() Dim totalGenerate As Integer, currentGenerate ...

  9. idea创建maven项目报错,Error initializing: org.codehaus.plexus.velocity.DefaultVelocityComponent@56da52a7 java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils

    学着使用idea,想创建个maven项目,但是出师不利,立马报错,贼尴尬,错误信息如下: D:\Develop\JDK\bin\java.exe -Dmaven.multiModuleProjectD ...

  10. Linux查看登录到服务的用户,查看用户的操作已经剔掉干坏事的用户的命令

    在工作中,我们有时候会经常的切换用户,有时候会忘记切换到哪个用户了,我们就需要知道当前登录的用户时谁,可以使用: whoami 查看当前登录到系统中的用户有哪些: who 列表中显示,第一列是用户名, ...