📄 computedate.java
字号:
/****************************************************************************************
* Java日历程序
* 作者:张亚航
*
* 完成时间:2008-5-22
*
* 程序功能:
* Control包中的ComputeDate类主要是用来计算每个月的第一天是星期几以及每个月的总天数
*
* 程序设计思想:
* 本程序的主要的思想是计算公元后某一年,根据MyDate对象中的year属性,计算在这年之前的总天数
* 然后计算每个月的偏移量,
* 然后mod 7求余数来计算每个月第一天的偏移量
*
******************************************************************************************/
package control;
import java.util.*;
import model.MyDate;
public class ComputeDate
{
int i,day,year;
int daysOfYear;
long wholeDays = 0;
int daysOfMonth = 0;
/*******************计算在这年之前的总天数*************************/
public long getWholeDays(MyDate date)
{
long dayCount=0;
for(int yearCount=1;yearCount<date.getYear();yearCount++)
{
//System.out.print("aaaaaaaaaaaaaa"+date.getYear());
if(isLeapYear(yearCount))
daysOfYear=366;
else
daysOfYear=365;
dayCount += daysOfYear;
}
return dayCount;
}
/*******************计算在这年每个月的偏移量*************************/
public long getFirstDay(MyDate date)
{
int curYear = date.getYear(); //当前年份
int curMonth = date.getMonth();//当前月份
int flagDay = 0; //该标记是个标记量,主要是当闰年的时候,则进行标记,很多偏移量根据这个变量来进行计算以区别闰年闰月
wholeDays = getWholeDays(date);
long firstDay = 0;
if(isLeapYear(curYear))
{
flagDay = 1;
//System.out.print("aaaaaaaaaaaaaa"+flagDay);
}
//计算某一个月份的偏移量
switch(curMonth)
{
case 1 : firstDay = wholeDays%7;daysOfMonth=31; break;
case 2 : wholeDays+=31;firstDay = wholeDays%7; daysOfMonth=28+flagDay; break;
case 3 : wholeDays+=59+flagDay;firstDay = wholeDays%7; daysOfMonth=31; break;
case 4 : wholeDays+=90+flagDay;firstDay = wholeDays%7; daysOfMonth=30; break;
case 5 : wholeDays+=120+flagDay;firstDay = wholeDays%7; daysOfMonth=31; break;
case 6 : wholeDays+=151+flagDay;firstDay = wholeDays%7; daysOfMonth=30; break;
case 7 : wholeDays+=181+flagDay;firstDay = wholeDays%7; daysOfMonth=31; break;
case 8 : wholeDays+=212+flagDay;firstDay = wholeDays%7; daysOfMonth=31; break;
case 9 : wholeDays+=243+flagDay;firstDay = wholeDays%7; daysOfMonth=30; break;
case 10: wholeDays+=273+flagDay;firstDay = wholeDays%7; daysOfMonth=31; break;
case 11: wholeDays+=304+flagDay;firstDay = wholeDays%7; daysOfMonth=30; break;
case 12: wholeDays+=334+flagDay;firstDay = wholeDays%7; daysOfMonth=31; break;
}
return firstDay;
}
//获得该月份总天数
public long getDaysOfMonth(MyDate date)
{
getFirstDay(date);
return daysOfMonth;
}
/*******************判断是否为闰年*************************/
public boolean isLeapYear(int year)
{
if ((year %4 == 0) && (year % 100 != 0)||(year % 400 == 0))
return true;
else
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -