`
java-mans
  • 浏览: 11389430 次
文章分类
社区版块
存档分类
最新评论

Java类Calendar详解

 
阅读更多

Calendar类就相当于一张日历,这张日历上有一个一个的Date,你可以想象有一个指针指向这张日历上的某个Date。


我们可以用Calendar calendar = Calendar.getInstance();方法得到一个Calendar对象,得到的Calendar对象默认是当天的Date。

下面的代码讲解了各种取得日期,时间,星期的方法:

// 得到Calendar实例对象
Calendar calendar = Calendar.getInstance();
// 目前的日期+时间+星期
System.out.println("Current Date:" + calendar.getTime());
// 本年
System.out.println("Current Year:" + calendar.get(Calendar.YEAR) + "年");
// 本月(注意月份是从0开始的,所以要+1)
System.out.println("Current Month:" + (calendar.get(Calendar.MONTH) + 1) + "月");
// 本日
System.out.println("Current Day Of Month:" + calendar.get(Calendar.DAY_OF_MONTH) + "日");
System.out.println("Current Day Of Month:" + calendar.get(Calendar.DATE) + "日");
// 本日在本周中的Index(周日是每个星期的第一天,周日~周六 对应着 1~7)
final String[] ARRAY_WEEKS = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println("Current Week:" + ARRAY_WEEKS[dayOfWeek - 1]);
// 本周在本月中的Index(即本月中的第几周)
System.out.println("Current Day Of Week In Month:本月第" + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH) + "周");
// 本日在本年中的Index(即本年中的第几天)
System.out.println("Current Day Of Year:本年第" + calendar.get(Calendar.DAY_OF_YEAR) + "日");
运行结果如下:

Current Date:Thu May 03 21:07:02 CST 2012
Current Year:2012年
Current Month:5月
Current Day Of Month:3日
Current Week:星期四
Current Day Of Week In Month:本月第1周
Current Day Of Year:本年第124日

指针默认是指向当天的Date的,那么怎么移动指针到其他的Date呢?
  1. setTime(Date date)
  2. set(int year, int month, int date)
  3. set(int year, int month, int date, int hourOfDay, int minute)
  4. set(int year, int month, int date, int hourOfDay, int minute, int second)
  5. set(int field, int value)
  6. add(int field, int amount)

第1、2、3、4种方法不解释

第5种方法:根据field决定设值方法,请看如下代码

// 设置Calendar的Date为本月第一天
calendar.set(Calendar.DATE, 1);
System.out.println("本月第一天的Date:" + calendar.getTime());
// 设置Calendar的Date为本月第一天
calendar.set(Calendar.DAY_OF_MONTH, 1);
System.out.println("本月第一天的Date:" + calendar.getTime());
// 设置Calendar的Date为本周第一天
calendar.set(Calendar.DAY_OF_WEEK, 1);
System.out.println("本周第一天的Date:" + calendar.getTime());
运行结果如下:

本月第一天的Date:Tue May 01 21:53:09 CST 2012
本月第一天的Date:Tue May 01 21:53:09 CST 2012
本周第一天的Date:Sun Apr 29 21:53:09 CST 2012

第六种方法:在本Date的基础上增加或减少(可以增加减少年,月,日,周,时,分,秒)

// 增加一天
calendar.add(Calendar.DATE, 1);
System.out.println("增加一天:" + calendar.getTime());
// 减少一天
calendar.add(Calendar.DATE, -1);
System.out.println("减少一天:" + calendar.getTime());
// 增加一小时
calendar.add(Calendar.HOUR, 1);
System.out.println("增加一小时:" + calendar.getTime());


想得到今年有多少天,多少周,本月有多少天,多少周怎么办呢?

System.out.println("今年有:" + calendar.getActualMaximum(Calendar.DAY_OF_YEAR) + "天,"
		+ calendar.getActualMaximum(Calendar.WEEK_OF_YEAR) + "周");
System.out.println("本月有:" + calendar.getActualMaximum(Calendar.DAY_OF_MONTH) + "天,"
		+ calendar.getActualMaximum(Calendar.WEEK_OF_MONTH) + "周");
运行结果如下:

今年有:366天,52周
本月有:31天,5周





分享到:
评论

相关推荐

    JAVA Calendar,Date类详解

    Calendar 和 Date 类 是JAVA很重要的两个类,学好它们对于JAVA学习的道路非常重要

    JAVA Calendar方法详解.doc

    我在网上收集的一个比较全的专门简绍java里面时间相关的资料,对初学者尤其有用

    Java Calendar类的详解及使用实例

    主要介绍了Java Calendar类的详解及使用实例的相关资料,需要的朋友可以参考下

    java中Calendar类用法实例详解

    主要介绍了java中Calendar类用法,结合实例形式较为详细的分析了Calendar类的函数、方法功能与相关使用技巧,需要的朋友可以参考下

    Java开发详解.zip

    031105_【第11章:Java常用类库】_日期操作类(Date、Calendar)笔记.pdf 031106_【第11章:Java常用类库】_日期操作类(DateFormat、SimpleDateFormat)笔记.pdf 031107_〖第11章:Java常用类库〗_实例操作:取得...

    Date与Calendar详解

    Date与Calendar 两者的区别与联系

    Java中的日期和时间类以及Calendar类用法详解

    主要介绍了Java中的日期和时间类以及Calendar类用法详解,是Java入门学习中的基础知识,需要的朋友可以参考下

    java常用类解析及示例及一些工具类源代码

    主要讲解了System类、Object类、Arrays类、Cloneable接口、IO系统输入输出类及装饰类、IO系统文本读写工具类、IO系统二进制读写工具类、对象序列化工具类、File类及文件搜索工具类、java异常机制及自定义异常类、...

    Java时间类Date类和Calendar类的使用详解

    主要介绍了Java时间类Date类和Calendar类的使用详解,需要的朋友可以参考下

    Java中Calendar时间操作常用方法详解

    主要为大家详细介绍了Java中Calendar时间操作常用方法,calendar中set方法和静态属性带来的一些坑,感兴趣的小伙伴们可以参考一下

    Java Calendar日历与Date日期的相互转换详解

    主要介绍了Java Calendar日历与Date日期的相互转换详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    (超赞)JAVA精华之--深入JAVA API

    1 JAVA SE ...3.5 JavaMail(JAVA邮件服务)API详解 3.6 jxl.jar 包简介 3.7 Java与XML联合编程之SAX篇 3.8 Java与XML联合编程之DOM篇 4 其他 4.1 代码复用的规则 4.2 Java IO 包中的Decorator模式

    Java基础知识点总结.docx

    <java.lang> Calendar:日历类 93 十六、 IO流:用于处理设备上数据 ★★★★★ 94 IO流的概念 95 字符流与字节流 98 流对象 101 File类 102 Java.util.Properties 103 介绍IO包中扩展功能的流对象 103 十七、 网络...

    JAVA SE学习精华集锦

    3.5 JavaMail(JAVA邮件服务)API详解 145 3.6 jxl.jar 包简介 150 3.7 Java与XML联合编程之SAX篇 154 3.8 Java与XML联合编程之DOM篇 159 4 其他 165 4.1 代码复用的规则 165 4.2 Java IO 包中的Decorator模式 168

    Java 中 Date 与 Calendar 之间的编辑与转换实例详解

    主要介绍了Java 中 Date 与 Calendar 之间的编辑与转换 ,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

    疯狂JAVA讲义

    9.4.2 Calendar类 334 9.4.3 TimeZone类 337 9.5 正则表达式 338 9.5.1 创建正则表达式 338 9.5.2 使用正则表达式 341 9.6 程序国际化 345 9.6.1 Java国际化的思路 346 9.6.2 Java支持的语言和国家 346 ...

    详解 Java中日期数据类型的处理之格式转换的实例

    主要介绍了详解 Java中日期数据类型的处理之格式转换的实例的相关资料,日期以及时间格式处理,在Java中时间格式一般会涉及到的数据类型包括Calendar类和Date类,需要的朋友可以参考下

    CalendarUtil.zip_Jsp/Servlet_Java_

    java Calendar详解及其各种例子

    Java开发技术大全 电子版

    13.5Date类和Calendar类的使用404 13.5.1Date类的简单使用404 13.5.2使用SimpleDateFormat格式化输出时间405 13.5.3Calendar类的特色408 13.5.4利用GregorianCalendar输出日历411 13.6Formatter类的使用413 ...

Global site tag (gtag.js) - Google Analytics