网上看到的一篇,码一下。侵删

一:字段和方法的信息
YEAR 字段:
public static final int YEAR ;
指示年的 get 和 set 的字段数字。这是一个特定于日历的值;
get 方法:
public int get(int field) ;
返回给定日历字段的值。在 lenient 模式下,所有日历字段都被标准化。在 non-lenient 模式下,所有日历字段都是经过验证的,如果任何日历字段有超出范围的值,则此方法抛出一个异常。标准化和验证都是通过 complete() 方法处理的,这个过程与日历系统有关。
参数:field - 给定的日历字段。
返回:给定日历字段的值。
抛出:ArrayIndexOutOfBoundsException - 如果指定字段超出范围 (field < 0 || field >= FIELD_COUNT)。
详细资料可以参考JDK API的java.util.Calendar
二:Calendar 类详解
Calendar 类是一个抽象类,它为特定时间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
1、使用Calendar类别之前,要先知道Calendar的一些方法取回的数字是对应于Calendar本身的常数,也就是说并不是取回1 这个数字,就表示今天是星期一。
a、想要取得时间,首先使用Calendar的getInstance()取得一个Calendar的实例,例如:
Calendar rightNow = Calendar.getInstance();
b、如果现在您想知道是几年,则可以使用get()方法并指定常数,例如:
System.out.println(rightNow.get(Calendar.YEAR));
c、如果是2005年,则上例会显示2005的数字,依照这个例子,假设撰写本文的时间是5月份,而现在想使用程式取得月份,则下例可能会有些困惑:
System.out.println(rightNow.get(Calendar.MONTH));
d、程式会显示4这个数字,而不是预期的5,因为传回的4并不是代表月份,而是对应于Calendar.MAY常数的值, Calendar在月份上的常数值从Calendar.JANUARY开始是0,到Calendar.DECEMBER的11,所以如果想要显示传回值的真正意涵,可以如下撰写:
String[] months = {"一月", "二月", "三月", "四月","五月", "六月", "七月", "八月","九月", "十月", "十一月", "十二月"};
Calendar rightNow = Calendar.getInstance();
System.out.println(months[rightNow.get(Calendar.MONTH)]);
2、初始值
代码如下,值得指出的是由于我们的时区设置是GMT+8,所以打印格林威治时间得到的是1970-01-01 08:00:00.
Calendar cal = Calendar.getInstance();//得到当前时间
cal.setTimeInMillis(0);//转换成格林威治时间
3、获取值
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,剩下自己推算)
如果拿时间不是为了计算而是展示出来,肯定用SimpleDateFormart了,模式为yyyy-MM-dd HH:mm:ss
4、设置值
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);//秒
5、运算值
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);//周

Java Calendar详解的更多相关文章

  1. JAVA Calendar详解(转)

    转自:http://blog.csdn.net/zerogotosum/article/details/1671314 (在文章的最后,将会介绍Date类,如果有兴趣,可以直接翻到最后去阅读) 究竟什 ...

  2. Java内部类详解

    Java内部类详解 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就 ...

  3. 黑马----JAVA迭代器详解

    JAVA迭代器详解 1.Interable.Iterator和ListIterator 1)迭代器生成接口Interable,用于生成一个具体迭代器 public interface Iterable ...

  4. C++调用JAVA方法详解

    C++调用JAVA方法详解          博客分类: 本文主要参考http://tech.ccidnet.com/art/1081/20050413/237901_1.html 上的文章. C++ ...

  5. Java虚拟机详解----JVM常见问题总结

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  6. [转] Java内部类详解

    作者:海子 出处:http://www.cnblogs.com/dolphin0520/ 本博客中未标明转载的文章归作者海子和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置 ...

  7. Java面向对象详解

    Java面向对象详解 前言:接触项目开发也有很长一段时间了,最近开始萌发出想回过头来写写以前学 过的基础知识的想法.一是原来刚开始学习接触编程,一个人跌跌撞撞摸索着往前走,初学的时候很多东西理解的也懵 ...

  8. java 乱码详解_jsp中pageEncoding、charset=UTF -8"、request.setCharacterEncoding("UTF-8")

    http://blog.csdn.net/qinysong/article/details/1179480 java 乱码详解__jsp中pageEncoding.charset=UTF -8&quo ...

  9. java 泛型详解(普通泛型、 通配符、 泛型接口)

    java 泛型详解(普通泛型. 通配符. 泛型接口) JDK1.5 令我们期待很久,可是当他发布的时候却更换版本号为5.0.这说明Java已经有大幅度的变化.本文将讲解JDK5.0支持的新功能---- ...

随机推荐

  1. 牛客OI周赛7-普及组

    https://ac.nowcoder.com/acm/contest/372#question A.救救猫咪 #include <bits/stdc++.h> using namespa ...

  2. Failed while installing JAX-RS (REST Web Services) 1.1. org.osgi.service.prefs.BackingStoreException: Resource '/.settings' does not exist.

    https://issues.jboss.org/browse/JBIDE-10039?_sscc=t https://stackoverflow.com/questions/16836832/fai ...

  3. HTML页面打印

    <style media=print>.Noprint{display:none;}</style> <object id="WebBrowser" ...

  4. wps word改多级编号为2.1

    右键标题1, 修改样式 编号 多级编号 标题1 2 3 右键标题2 修改样式 选择格式-编号 选择多级编号-标题1 2 3 直接点确定,OK. ---------------------------- ...

  5. DTW的原理及matlab实现(转载+整理)

    在大部分的学科中,时间序列是数据的一种常见表示形式.对于时间序列处理来说,一个普遍的任务就是比较两个序列的相似性. 在时间序列中,需要比较相似性的两段时间序列的长度可能并不相等,在语音识别领域表现为不 ...

  6. python 协程库gevent学习--gevent数据结构及实战(四)

    一不留神已经到第四部分了,这一部分继续总结数据结构和常用的gevent类,废话不多说继续. 1.Timeout错误类 晚上在调试调用第三方接口的时候,发现有些接口耗时非常多,觉得应该有个超时接口来限制 ...

  7. rabbitmq代码配置

    package com.qukoucai.test; import com.rabbitmq.client.AMQP;import com.rabbitmq.client.AMQP.BasicProp ...

  8. Lucene最重要的功能是对一段话的分析

    Lucene最重要的功能是对一段话的分析

  9. BZOJ4764弹飞大爷——LCT

    题目描述 自从WC退役以来,大爷是越来越懒惰了.为了帮助他活动筋骨,也是受到了弹飞绵羊一题的启发,机房的小伙伴们 决定齐心合力构造一个下面这样的序列.这个序列共有N项,每项都代表了一个小伙伴的力量值, ...

  10. hdu 3949 XOR (线性基)

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=3949 题意: 给出n个数,从中任意取几个数字异或,求第k小的异或和 思路: 线性基求第k小异或和,因为题 ...