平时在处理时间问题的时候,一般会想到用java.util.Date类型,在使用倒时间的运算的时候,就不是很方便,找找到了java.util.Calendar类,中文意思是“日历”,以下就是自己对这个类的总结了,有不足之处请指正。

一.声明Calendar类,Calendar是一个抽象类,不能直接New一个实例,可以有两种方法得到它的实例:
方法一:Calendar cal = new GregorianCalendar(); //GregorianCalendar是Calendar的实现类,
方法二:Calendar cal = Calendar.getInstance();

通过以上方法获得的实例,默认都是当前日期。验证如下:

System.out.println("打印结果:"+(new SimpleDateFormat("yyyy-MM-dd hh-mm-ss SSSS E").format(calendar.getTime())));

打印结果:2015-09-12 08:57:02 0565 星期六

上述是使用了格式转换.

同样,也可以直接使用Calendar对象自己的get()方法来获取具体的值:

System.out.println("打印结果:Calendar.DAY_OF_WEEK:"+calendar.get(Calendar.DAY_OF_WEEK));//表示星期几。从星期日开始到星期六为一个周期,数字表示依次为:1,2,3……7。
calendar.add(Calendar.MONTH, 1);//MONTH的表示是从数字0开始,所以月份应该是该数字+1.
System.out.println("打印结果:"+
calendar.get(Calendar.YEAR)+"-"+
calendar.get(Calendar.MONTH)+"-"+
calendar.get(Calendar.DAY_OF_MONTH)+" "+
calendar.get(Calendar.HOUR_OF_DAY)+":"+
calendar.get(Calendar.MINUTE)+":"+
calendar.get(Calendar.SECOND)
);
打印结果:Calendar.DAY_OF_WEEK:7
打印结果:2015-9-12 8:59:55

获取方法--Calendar对象.get(类的属性);

二:常用属性: 

 AM_PM                           上午/下午标志
DATE                            完整日期标志
DAY_OF_MONTH                       本月第几天
DAY_OF_WEEK                        星期几
DAY_OF_WEEK_IN_MONTH                  尚未理解)
DAY_OF_YEAR                        本年度的第几天
HOUR                            小时(12小时制,分上下午)
HOUR_OF_DAY                        小时(24小时制,不分上下午)
MILLISECOND                        微秒
MINUTE                           分钟
MONTH                            月份
SECOND                           秒
WEEK_OF_MONTH                       本月第几个星期
calendar.getActualMaximum(Calendar.DAY_OF_MONTH) 一个月中最大值

三:Calendar设定一个时间值

  方法一:setTime(Date date)

  方法二:set(int field, int value)

  方法三://使用这个方法的时候需要注意,month是需要在正常月份-1
    set(int year, int month, int date)
    set(int year, int month, int date, int hourOfDay, int minute)
    set(int year, int month, int date, int hourOfDay, int minute, int second)

  方法四:setTimeInMillis(long millis)

四:Calendar对象的运算  

(1)add()方法
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH, 8);
cal.set(Calendar.DAY_OF_MONTH, 3);
cal.add(Calendar.DATE, -4);
Date date=cal.getTime();
System.out.println(df.format(date));
cal.add(Calendar.DATE, 4);
date=cal.getTime();
System.out.println(df.format(date));
输出:
2006-08-30
2006-09-03
(2)roll方法
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH, 8);
cal.set(Calendar.DAY_OF_MONTH, 3);
cal.roll(Calendar.DATE, -4);
date=cal.getTime();
System.out.println(df.format(date));
cal.roll(Calendar.DATE, 4);
date=cal.getTime();
System.out.println(df.format(date));
输出:
2006-09-29
2006-09-03
可见,roll()方法在本月内循环,一般使用add()方法;

五.Calendar和Date的转化
  

(1) Calendar转化为Date
    Calendar cal=Calendar.getInstance();
    Date date=cal.getTime();
(2) Date转化为Calendar  
    Date date=new Date();
    Calendar cal=Calendar.getInstance();
    cal.setTime(date);

Calendar用法随笔的更多相关文章

  1. java 日历类Calendar用法

    如何获取昨天?取昨天的日期,本想的截出来日期减一就好了.又一想不对,如果今天是一号怎么办? 现有两个办法 1: Date as = new Date(new Date().getTime()-24*6 ...

  2. SpringBoot进阶用法-随笔

    SpringBoot进阶用法 实现setApplicationContext //实现ApplicationContextAware接口,重写setApplicationContext方法 publi ...

  3. java.sql.Date/ java.util.Date/ java.util.Calendar 用法与区别

    在 JDK API  这样解释," 在 JDK 1.1 之前,类 Date 有两个其他的函数.它允许把日期解释为年.月.日.小时.分钟和秒值.它也允许格式化和解析日期字符串.不过,这些函数的 ...

  4. Java 学习 时间格式化(SimpleDateFormat)与历法类(Calendar)用法详解

    基于Android一些时间创建的基本概念 获取当前时间 方式一: Date date = new Date(); Log.e(TAG, "当前时间="+date); 结果: E/T ...

  5. 表单(中)-EasyUI Combogrid 组合网格、EasyUI Numberbox 数字框、EasyUI Datebox 日期框、EasyUI Datetimebox 日期时间框、EasyUI Calendar 日历

    EasyUI Combogrid 组合网格 扩展自 $.fn.combo.defaults 和 $.fn.datagrid.defaults.通过 $.fn.combogrid.defaults 重写 ...

  6. Echarts运用

    echarts客户端写法:http://echarts.baidu.com/doc/example.html  ,下载echarts-2.0.4.jar包,把src里面的js引入到项目里,在放esl. ...

  7. 201871020225-牟星源《面向对象程序设计(java)》第四周学习总结

    201871020225-牟星源<面向对象程序设计(java)>第四周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这 ...

  8. 转——JAVA中calendar,date,string 的相互转换和详细用法

    package cn.outofmemory.codes.Date; import java.util.Calendar; import java.util.Date; public class Ca ...

  9. Calendar中add函数和roll函数的用法及区别

    Calendar中add()和roll()函数的用法一.取某个时间点后的整点时刻.例如1984年7月7日15:23:05后的整点时刻即为1984-07-07 16:00:00.实现如下:Calenda ...

随机推荐

  1. python实现命令行解析的argparse的使用

    参考https://docs.python.org/3.6/library/argparse.html argparse模块使编写用户友好的命令行界面变得很容易.程序定义了它需要什么参数,argpar ...

  2. Java中volatile关键字解析

    一.内存模型的相关概念 大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入.由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存 ...

  3. Java多线程编程核心技术(一)Java多线程技能

    1.进程和线程 一个程序就是一个进程,而一个程序中的多个任务则被称为线程. 进程是表示资源分配的基本单位,线程是进程中执行运算的最小单位,亦是调度运行的基本单位. 举个例子: 打开你的计算机上的任务管 ...

  4. [书籍]重温《Framework Design Guidelines》

    1. 前言 最近重温了<Framework Design Guidelines>. <Framework Design Guidelines>中文名称为<.NET设计规范 ...

  5. python 跨域处理方式

    因为浏览器的同源策略限制,不是同源的脚本不能操作其他源下面的资源,想操作另一个源下面的资源就属于跨域了,这里说的跨域是广义跨域,我们常说的代码中请求跨域,是狭义的跨域,即在脚本代码中向非同源域发送ht ...

  6. python 链接 redis 失败 由于目标计算机积极拒绝,无法连接

    whereis redis-cli ps -ef |grep redis 1.启动redis redis-server & 2.查看redis 进程 ps -ef |grep redis 3. ...

  7. 从HelloWorld开始学习.NET Core

    1.首先创建一个项目文件夹,如E:\CoreProjects 使用cmd命令进入到新建的文件夹中 2.创建一个HelloWorld项目 命令:dotnet new console -o hellowo ...

  8. [Loadrunner参数化]一个文件输两列参数的取值

    关于LoadRunner参数化的内容,在脚本开发中属于非常重要的一个知识点.关于这部分知识,在书上和网上到处都能找到,本篇只讲一种特殊情况:一个参数化文件为File类型,有多列值,如何进行参数化取值. ...

  9. Redux 入门教程(三):React-Redux 的用法

    为了方便使用,Redux 的作者封装了一个 React 专用的库 React-Redux,本文主要介绍它. 这个库是可以选用的.实际项目中,你应该权衡一下,是直接使用 Redux,还是使用 React ...

  10. H5 65-清除浮动方式一

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...