?? 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 + -