练习:
1、获取任意年的二月有多少天:
2、获取前一天的现在这个时刻
3、计算有效上课天数:每周六日不上课,计算任意年从九月到十月的有效上课天数,此处不含节假日
import java.util.*;
class CalendarTest
{
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args)
{
//测试1
int n = getFEB(2012);
sop("2012年2月的天数:" + n);
//测试2
String s = getTheTime();
sop("昨天的现在这个时刻是:" + s);
sop("-----------------");
//测试3
int m = getValDay(2013,1,3);
sop("有效上课天数:" + m);
}
//测试1:创建获取二月的方法
public static int getFEB(int year)
{
Calendar c = Calendar.getInstance();
//设置任意年的时间为3月1号
c.set(year,2,1);
//获取设置后的3月1日,并减去1天,即为二月最后一天
c.add(Calendar.DAY_OF_MONTH,-1);
//获取最终设置的日期,即为获取到的二月的天数
int n = c.get(Calendar.DAY_OF_MONTH);
return n;
}
//测试2:获取前一天的现在这个时刻
public static String getTheTime()
{
//获取时间信息
Calendar c = Calendar.getInstance();
//将日期设置为昨天
c.add(Calendar.DAY_OF_MONTH,-1);
//获取昨天的现在这个时刻
int n = c.get(Calendar.DAY_OF_MONTH);
return n + "日 " + c.get(Calendar.HOUR_OF_DAY) + ":" + c.get(Calendar.MINUTE) + ":" + c.get(Calendar.SECOND);
}
//测试3:计算有效上课天数
public static int getValDay(int year,int startMON,int endMON)
{
//获取时间信息
Calendar c = Calendar.getInstance();
//调用获取天数函数
int day = getDay(c,year,startMON,endMON);
sop(" 总天数:" + day);//测试获取的天数
//初始化星期
int week = 0;
//定义计数器
int count = 0;
//遍历每天一天,判断是否为周六日,f否的话计数器自增
for(int i=0;i<day;i++)
{
//必须要先将天数加1再判断,否则到week为6的时候会一直continue,
//而且此处也可以避免下面的week是以星期日为第一天的问题
c.add(Calendar.DAY_OF_MONTH,1);
//获取当前天数的星期
week = c.get(Calendar.DAY_OF_WEEK);
//sop("星期:" + week);
if (week==6 || week==7)
continue;
count++;
//sop("有效天数:" + count);
}
return count;
}
//获取给定月份的天数
public static int getDay(Calendar c,int year,int startMON,int endMON)
{
//定义天数和变量
int sum = 0;
//遍历每个月的天数
for(int i=0;i<=endMON-startMON;i++)
{
//设定第二个月的第一天,循环一次后设定下个月为处世月,因为0为一月份所以startMON要加1
c.set(year,startMON+i,1);
//获取前一个月的天数
c.add(Calendar.DAY_OF_MONTH,-1);
//将每个月的天数累加
sum += c.get(Calendar.DAY_OF_MONTH);
//循环后,要相应加上i个月
c.add(Calendar.MONTH,i+1);
}
return sum;
}
}
|