现在的位置: 首页 > 综合 > 正文

Java_Calendar

2013年09月08日 ⁄ 综合 ⁄ 共 2563字 ⁄ 字号 评论关闭

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周

抱歉!评论已关闭.