一、 如何创建 Calendar 对象

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

1 Calendar cal = Calendar.getInstance();

二、 字段详解

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

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

1 Calendar cal = Calendar.getInstance();
2 cal.set(Calendar.YEAR, 1998);
3 cal.set(Calendar.MONTH, 1);
4 cal.set(Calendar.DATE, 28);
5 cal.set(Calendar.HOUR_OF_DAY, 23);
6 cal.set(Calendar.MINUTE, 11);
7 cal.set(Calendar.SECOND, 11);
  1. YEAR

    默认情况下指示为年份.

例子中 YEAR 为 1998

  1. MONTH

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

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

  1. WEEK_OF_YEAR

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

例子中 WEEK_OF_YEAR 为 9

  1. WEEK_OF_MONTH

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

例子中 WEEK_OF_MONTH 为 5

  1. DAY_OF_MONTH

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

例子中 DAY_OF_MONTH 为 28

  1. DATE

    同 DAY_OF_MONTH

  2. DAY_OF_YEAR

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

例子中 DAY_OF_YEAR 为 59

  1. DAY_OF_WEEK

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

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

  1. AM_PM

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

  2. HOUR

指示上午或下午的小时.

例子中 HOUR 为 11

  1. HOUR_OF_DAY

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

例子中 HOUR_OF_DAY 为 23

  1. MINUTE

指示一小时中的分钟

例子中 MINUTE 为 11

  1. SECOND

指示一分钟中的秒

例子中 SECOND 为 11

三、 设置值

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

四、 获取值

1 cal.get (Calendar.YEAR);//年
2 cal.get (Calendar.MONTH) + 1;//月 (必须要+1)
3 cal.get (Calendar.DATE);//日
4 cal.get (Calendar.HOUR_OF_DAY);//时
5 cal.get (Calendar.MINUTE);//分
6 cal.get (Calendar.SECOND);//秒
7 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 中 this 和 super 的用法详解

    前言 这次我们来回顾一下this和super这两个关键字的用法,作为一名Java程序员,我觉得基础是最重要的,因为它决定了我们的上限,所以我的文章大部分还是以分享Java基础知识为主,学好基础,后面的 ...

  2. c++ 中pair类模板的用法详解

    pair: 头文件:#include<utility> 类模板:template <class T1, class T2> struct pair 参数:T1是第一个值的数据类 ...

  3. Java中static变量作用和用法详解

    static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...

  4. Java中链接MS SQL 数据库用法详解

    一.第一种方法: 使用JDBC-ODBC的桥方式 JDBC-ODBC桥连接器是用JdbcOdbc.class 和一个用于访问ODBC驱动程序的本地库实现的,对于Windows平台,该本地库是一个动态链 ...

  5. Java 5 的新标准语法和用法详解集锦

    Java 5 的新标准语法和用法详解集锦 Java 5 的新标准语法和用法详解集锦 (需要在首选项-java-complier-compiler compliance level中设置为java5.0 ...

  6. java中List的用法和实例详解

    java中List的用法和实例详解 List的用法List包括List接口以及List接口的所有实现类.因为List接口实现了Collection接口,所以List接口拥有Collection接口提供 ...

  7. JUC中的AQS底层详细超详解

    摘要:当你使用java实现一个线程同步的对象时,一定会包含一个问题:你该如何保证多个线程访问该对象时,正确地进行阻塞等待,正确地被唤醒? 本文分享自华为云社区<JUC中的AQS底层详细超详解,剖 ...

  8. Java中堆内存和栈内存详解2

    Java中堆内存和栈内存详解   Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配.当在一段代码块中定义一个变量时,ja ...

  9. Delphi中TStringList类常用属性方法详解

    TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 先把要讨论的几个属性列出来: 1.CommaText 2.Delim ...

随机推荐

  1. Java TCP案例网络聊天室

    收获:1,加深了对多线程的一边一边的理解,可以将行为写成不同的类然后多线程 2,IO流的复习! 3,多线程中一边读取一边操作时容器最好(CopyOnWriteArrayList); 4,Tcp流程的熟 ...

  2. python 一个模块找不到的错误:ModuleNotFoundError

    阿刁是一个自动化测试用例,从一出生他就被赋予终生使命,去测试一个叫登录的过程是否合理.他一直就被关在一个小黑屋里面,从来也没有出去过,小黑屋里还被关着其他的同胞,他们身上都捆着两个小袋子. 小黑屋里很 ...

  3. Python 简明教程 --- 2,第一个Python 程序

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果你发现特殊情况太多,那你肯定是用错方法了. -- Carig Zerouni 当你在自己的电脑上 ...

  4. Mysql 常用函数(6)- replace 函数

    Mysql常用函数的汇总,可看下面系列文章 https://www.cnblogs.com/poloyy/category/1765164.html replace 的作用 将某些字符串替换成新的字符 ...

  5. Spring Boot 之 Spring Batch 批处理实践

    实践内容 从 MariaDB 一张表内读 10 万条记录,经处理后写到 MongoDB . 具体实现 1.新建 Spring Boot 应用,依赖如下: <!-- Web 应用 --> & ...

  6. python实现简易词频统计-源码

    需求:给瓦尔登湖文章统计单词出现的频率 思路:首先读取文件并以空格分割得到列表,然后利用for循环遍历列表中的元素并把去掉列表元素中的符号,第三步去掉相同的元素,将列表转换为一个字典,最后按照键值对升 ...

  7. day08文件的操作(0221)

    #1.文件操作之追加数据01:f = open("yesterday01",'a+U',encoding="utf-8")#a= append,追加之意,w则为 ...

  8. kudu_遇到的一些问题

                            最近在研究,自己搭建kudu遇到的一些问题,及解决方法,供大家参考. 1.java连接kudu,出现超时的问题,是因为kudu开启了认证模式: 通过查找 ...

  9. JQuery动态创建表单并提交

    // 捕捉链接的点击事件 $('#btn').click(function(){ // 取得要提交的参数 var my_val = $.trim($('#ipt').val()); // 取得要提交页 ...

  10. Deno会在短期内取代Node吗?

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://blog.bitsrc.io/what-is-deno-and-will-it-r ...