Calendar用法随笔
平时在处理时间问题的时候,一般会想到用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用法随笔的更多相关文章
- java 日历类Calendar用法
如何获取昨天?取昨天的日期,本想的截出来日期减一就好了.又一想不对,如果今天是一号怎么办? 现有两个办法 1: Date as = new Date(new Date().getTime()-24*6 ...
- SpringBoot进阶用法-随笔
SpringBoot进阶用法 实现setApplicationContext //实现ApplicationContextAware接口,重写setApplicationContext方法 publi ...
- java.sql.Date/ java.util.Date/ java.util.Calendar 用法与区别
在 JDK API 这样解释," 在 JDK 1.1 之前,类 Date 有两个其他的函数.它允许把日期解释为年.月.日.小时.分钟和秒值.它也允许格式化和解析日期字符串.不过,这些函数的 ...
- Java 学习 时间格式化(SimpleDateFormat)与历法类(Calendar)用法详解
基于Android一些时间创建的基本概念 获取当前时间 方式一: Date date = new Date(); Log.e(TAG, "当前时间="+date); 结果: E/T ...
- 表单(中)-EasyUI Combogrid 组合网格、EasyUI Numberbox 数字框、EasyUI Datebox 日期框、EasyUI Datetimebox 日期时间框、EasyUI Calendar 日历
EasyUI Combogrid 组合网格 扩展自 $.fn.combo.defaults 和 $.fn.datagrid.defaults.通过 $.fn.combogrid.defaults 重写 ...
- Echarts运用
echarts客户端写法:http://echarts.baidu.com/doc/example.html ,下载echarts-2.0.4.jar包,把src里面的js引入到项目里,在放esl. ...
- 201871020225-牟星源《面向对象程序设计(java)》第四周学习总结
201871020225-牟星源<面向对象程序设计(java)>第四周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这 ...
- 转——JAVA中calendar,date,string 的相互转换和详细用法
package cn.outofmemory.codes.Date; import java.util.Calendar; import java.util.Date; public class Ca ...
- Calendar中add函数和roll函数的用法及区别
Calendar中add()和roll()函数的用法一.取某个时间点后的整点时刻.例如1984年7月7日15:23:05后的整点时刻即为1984-07-07 16:00:00.实现如下:Calenda ...
随机推荐
- Vue+element-ui 重置组件样式的写法
两种方式实现element-ui组件的样式 方案1:重置的公共组件样式的写法如下 然后在main.js中引入 import '@/assets/css/element.css' 方案2:每个.vu ...
- Spark性能优化指南——高级篇(转载)
前言 继基础篇讲解了每个Spark开发人员都必须熟知的开发调优与资源调优之后,本文作为<Spark性能优化指南>的高级篇,将深入分析数据倾斜调优与shuffle调优,以解决更加棘手的性能问 ...
- Android开发之自定义万能BaseAdapter
话不多说哦,直接上模板: package com.zyzpp.adapter; import android.content.Context; import android.util.SparseAr ...
- .Net架构篇:实用中小型公司支付中心设计
前言 说起支付平台,支付宝量级的支付平台和一个小型公司的支付不可同日耳语.一个初创或刚创业一两年的公司,一没人力,二没财力的情况下,如果也想对接支付那怎么办呢?感谢支付宝和微信支付,两大行业巨头提供了 ...
- git revert 还有这个坑?
最近也是终于开启了代码编写之旅,我只能默默地说一句,写代码的感觉,简直不能再爽! 不过也由于 git 的分支管理蛋疼懵逼很久,所以必须记录以及和大家分享一下本次坑爹的旅行. 写在前面 每个公司相比都有 ...
- 【小技巧】css文字两端对齐
一.文字两端对齐方法: text-align-last: justify; 二.举个丽子: 三.效果如下: 四.注意: 要使文字在容器中两端对齐,该容器需要是一个块级元素,要有自己的宽度.
- 爬虫(二)之scrapy框架
01-scrapy介绍 02-项目的目录结构: scrapy.cfg 项目的主配置信息.(真正爬虫相关的配置信息在settings.py 文件中) items.py 设置数据存储模板,用于结构化数据, ...
- Educational Codeforces Round 52 (Rated for Div. 2) -C
#include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> ...
- hibernate设置二级缓存时报错java.lang.NoClassDefFoundError: org/hibernate/engine/jndi/JndiNameException
错误提示大概意思是,没有类定义错误,就是找不到要使用的hibernate二级缓存管理引擎类.我在这用的是ehcache二级轻量级缓存,报错原因可能是导入的jar包版本和使用的hibernate框架核心 ...
- sql中return和returns的区别
用户定义函数中,用RETURNS 子句指定该函数返回值的数据类型 return用于返回具体的值/值变量