java中Calendar用法总结
来源:互联网 发布:安卓6.0mac地址修改器 编辑:程序博客网 时间:2024/05/19 03:25
当我们需要处理时间问题的时候,我们首先想到的是Date类型,然而熟悉Date API的人一定都知道,这个类的许多方法都被废弃了,取而代之的是Calendar类,Calendar的中文意思是“日历”,因此用他来处理时间问题,也算是实至名归了,下面是我对Calendar的一些理解,不足之处请指正。
一.Calendar是一个抽象类,不能直接New一个实例,可以有两种方法得到它的实例:
方法一:Calendar cal = new GregorianCalendar(); //GregorianCalendar是Calendar的实现类,
方法二:Calendar cal = Calendar.getInstance();
通过以上方法获得的实例,默认都是当前日期。我们可以通过以下代码验证一下:
//此时是2010年8月25日15时18分18秒Calendar cal = Calendar.getInstance();System.out.println("DAY_OF_WEEK: "+cal.get(Calendar.DAY_OF_WEEK));System.out.println("DAY_OF_MONTH: "+cal.get(Calendar.DAY_OF_MONTH));System.out.println("DAY_OF_YEAR: "+cal.get(Calendar.DAY_OF_YEAR));System.out.println("YEAR: "+cal.get(Calendar.YEAR));System.out.println("MONTH: "+cal.get(Calendar.MONTH));System.out.println("HOUR_OF_DAY : "+cal.get(Calendar.HOUR_OF_DAY));System.out.println("MINUTE : "+cal.get(Calendar.MINUTE)); System.out.println("SECOND : "+cal.get(Calendar.SECOND));
得到的结果如下:
DAY_OF_WEEK: 4
DAY_OF_MONTH: 25
DAY_OF_YEAR: 237
YEAR: 2010
MONTH: 7
HOUR_OF_DAY : 15
MINUTE : 18
SECOND : 18
注意:
DAY_OF_WEEK表示星期几。从星期日开始到星期六为一个周期,数字表示依次为:1,2,3……7。
MONTH的表示是从数字0开始,所以月份应该是该数字+1.
二. 很多情况下,我们需要进行时间的计算,如:将某个时间向前推几小时、几天、几个月等。这个时候我们就需要对Calendar设定一个时间值。
我们有几种常见的设置方法:
方法一:setTime(Date date)
方法二:
set(int field, int value)
方法三:
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)
在进行时间运算的时候,我们经常会用到如下方法:
add(int field, int amount)
示例代码:
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1);
System.out.println(cal.getTime());
结果如下:
Thu Aug 26 15:49:03 CST 2010
以上是将时间向后推,如果要向前推,将第二个参数(amount)改成负数即可。
三. 另外,Calendar还提供几个非常好用的日期比较函数:
after(Object when)
before(Object when)
equals(Object when)
compareTo(Calendar anotherCalendar)
需要注意的是:上面的Object参数类型必须是Calendar的实例(instance),否则就没有意义了。示例代码:
Calendar cal = Calendar.getInstance();Calendar cal2 = Calendar.getInstance();cal2.setTimeInMillis(1282023123371L);System.out.println("Date1: " + cal.getTime());System.out.println("Date2: " + cal2.getTime());System.out.println("Date1 is later than Date2: " + cal.after(cal2));System.out.println("Date1 is earlier than Date2: " + cal.before(cal2));System.out.println("Date1 equals Date2: " + cal.equals(cal2));System.out.println("Date1 compare to Date2: " + cal.compareTo(cal2));
运行结果为:
Date1: Wed Aug 25 16:18:07 CST 2010
Date2: Tue Aug 17 13:32:03 CST 2010
Date1 is later than Date2: true
Date1 is earlier than Date2: false
Date1 equals Date2: false
Date1 compare to Date2: 1
compareTo()函数的返回值有三个:0 1 -1,分别表示相等、大于(表示第一个时间离现在较近)、小于(表示第一个时间离现在较远)。
四. 总结
相比Date类型,Calendar显得更加灵活和强大。掌握Calendar的用法必将为你的开发之路打下良好的基础。更多详情请查阅JDK1.5帮助文档。
由于水平有限,文中难免会有错误之处,敬请指正。
原创文章,转载请注明出处!
本文地址:http://www.jssay.com/blog/index.php/2010/08/25/jdk学习笔记之calendar用法/
本Blog文章除特别声明之外皆为原创文章,欢迎转载,转载请注明: 转载自JSSAY'S BLOG
本文链接地址: http://www.jssay.com/blog/index.php/2010/08/25/jdk%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0%e4%b9%8bcalendar%e7%94%a8%e6%b3%95/
- java中Calendar用法总结
- java中calendar的用法
- java中Calendar类用法
- Java中 Calendar类用法
- java 中calendar常见用法
- Android中Calendar类的用法总结
- Android中Calendar类的用法总结
- Android中Calendar类的用法总结
- java.util中Calendar类的用法
- JAVA 中Calendar类一些常用法
- java中Calendar类的用法
- java中日历Calendar类测试总结
- java---Calendar用法
- java时间用法calendar
- java calendar 时间用法
- JAVA,Calendar的用法
- Java-Calendar用法
- java 时间 Calendar 用法
- 并发控制
- 被微软鲍尔默怒摔椅子的人:构建21世纪的Linux
- 大数据技术炙手可热 专业人才短缺成发展掣肘
- SOAP在java中的应用实例
- 树形结构的数据库表Schema设计
- java中Calendar用法总结
- 【源码包编译】CentOS-5.7安装GTK+(未完)
- Jquery取值
- wince注册表的加载过程以及device.exe和filesys.exe的加载过程
- jira与oracle字符集不一致问题解决
- JAVA中final的一些作用介绍
- Ubuntu 11.10 12.04 12.10流行的应用插件
- hdoj 1263 map
- 求一组线段的覆盖范围