Calendar的使用之查看一年中所有星期三和其他函数的使用

<pre name="code" class="java">import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Main {
	
    public static void main(String[] args) {
	
    	Calendar calendar = Calendar.getInstance();
    	// 输出本年中一共有多少周
    	int weeksInWeekYear = calendar.getWeeksInWeekYear();
    	System.out.println(weeksInWeekYear);
    	// 输出年份
    	int weekYear = calendar.getWeekYear();
    	System.out.println(weekYear);
    	// 本周是该月的第几周
    	int n = calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH);
    	System.out.println("**** "+n);
    	
    	
    	Date date = new Date(System.currentTimeMillis());
    	
    	System.out.println(date);
    	// 通过SimpleDateFormat的format方法,可以将Date对象类型转变成字符串类型
    	SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    	String str = format.format(date);
    	System.out.println(str);
    	
    	System.out.println(dayForWeek("2016-01-01"));
    	int m = 1;
    	while(m < 13){
    		int month = m;
    		calendar.clear();
    		calendar.set(Calendar.YEAR, weekYear);
    		// 1月从0开始
    		calendar.set(Calendar.MONTH, month - 1);
    		//设置为1号,当前日期既为本月第一天  
    		calendar.set(Calendar.DAY_OF_MONTH, 1);
    	    // 将calendar对象初始化为month的第一天
    		System.out.println("##### "+format.format(calendar.getTime()));
    		// 获取每个月份的天数
    		int count = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
    		System.out.println("@@@ "+count);
    		
    		// 输出每个月份的每天日期,由于上面每个月一号已经输出来,所以只需要输出剩余的count-1天
    		for(int j=0;j<=(count - 2);){
    			calendar.add(Calendar.DAY_OF_MONTH, +1);
    			j++;
//    			System.out.println(format.format(calendar.getTime()));
    			
    			// 如果是星期三就输出来
    			if(dayForWeek(format.format(calendar.getTime())) == 3){
    				System.out.println(format.format(calendar.getTime()));
    			}
    		}
    		m++;
    	}
    	
    }
    
    public static int dayForWeek(String pTime){
    	
    	SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    	Calendar calendar = Calendar.getInstance();
    	try {
    		// 通过SimpleDateFormat的parse方法可以将字符串日期转变成Date类型对象
			calendar.setTime(format.parse(pTime));
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    	int dayForWeek = 0;
    	/**
    	 * 必须要减一,因为数组下标从0开始,而她返回的是数组的内容,是数组{1,2,3,4,5,6,7}
    	 * 中用1~7来表示:星期天,星期一,星期二,星期三,星期四,星期五,星期六 。
    	 * 如果当天是星期一她会返回2,所以减一,才等于1,才是你想要的,如果是星期天就返回1-1=0咯!
    	 */
    	if(calendar.get(Calendar.DAY_OF_WEEK) == 1){
    		dayForWeek = 7;
    	}else{
    		dayForWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
    		
    	}
    	
    	return dayForWeek;
    	
    }
	
	
	
}

 

Calendar中一些比较常用的函数的使用

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Exp {

	
	public static void main(String[] args) {
		Date date2 = null;
		Calendar calendar = Calendar.getInstance();
		Date date = calendar.getTime();
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		String string = format.format(date);
		System.out.println("current date:"+string);
		
		try {
			date2 = format.parse(string);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		calendar.setTime(date2);
		// 使用add当修改的字段超出它允许的最大范围时,会发生进位,即上一级的字段会增大
		calendar.add(Calendar.MONTH, 11);
		String str = format.format(calendar.getTime());
		System.out.println("add method. after 11 month date:"+str);
		
		calendar.setTime(date2);
	    // 使用roll修改的字段超出它允许的最大范围时,不会发生进位
		calendar.roll(Calendar.MONTH,11);
		String string2 = format.format(calendar.getTime());
		System.out.println("roll method. after 11 month date:"+string2);
		
		calendar.clear();
		// Calendar.MONTH的起始值是0,代表1月份,所以下面的表示是2016-1-31
		calendar.set(2016, 0, 31);
		// 一月增加一个月就是2月份,由于2月份没有31号,就自动变为该月最后一天29号
		calendar.add(Calendar.MONTH, 1);
		String string3 = format.format(calendar.getTime());
		System.out.println(string3);
		
	}
	
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值