javaでカレンダー作成
西暦年号・月を入力して、その月のカレンダーを出力するというものです。
<処理例>
指定日のカレンダーを出力します。
西暦年を入力:2007
月を入力:6
日 月 火 水 木 金 土
______________________1____2
_3___4___5___6___7___8___9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
というものを出力したいです。下線は何もないという意味です。(見にくかったらすみません)
一応途中のプログラム載せます。 ~~~の部分を教えてください。
お願いします。
import java.io.*;
public class Ex01a{
public static void main ( String[] args ) throws IOException{
int year, month, day, i, youbiNum=0;
String ss;
BufferedReader kbd = new BufferedReader(new InputStreamReader(System.in));
System.out.println("指定月のカレンダーを出力します");
System.out.print("西暦年を入力:");
ss = kbd.readLine();
year = getInt(ss);
System.out.print("月を入力:");
ss = kbd.readLine();
month = getInt(ss);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
day = 1;
youbiNum=getyoubi(year,month,day);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}
public static void printCal(int maxDay, int youbiNum){
int cal[] = new int[43];
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
public static int getyoubi(int year, int month, int day){
int youbiNum, y1, nissuu=0;
y1 = year-1;
nissuu += y1 + y1/4 - y1/100 + y1/400+getJulian(year, month, day);
youbiNum = nissuu % 7;
return youbiNum;
}
public static int getJulian(int year, int month, int day){
int julian;
julian = day;
while(--month > 0){
julian+=getDay(year,month);
}
return julian;
}
public static int getDay(int year, int month){
int mmdd[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int mmdd_day;
mmdd[2] += uruu(year);
mmdd_day = mmdd[month];
return mmdd_day;
}
public static int getInt(String ss){
try{
return Integer.parseInt(ss);
}
catch(Exception e){
return 0;
}
}
public static int uruu(int yy){
if(yy%4==0 && yy%100!=0 || yy%400==0) return 1;
else return 0;
}
}
お礼
isle様 ご指摘誠にありがとうございました。 その通りで、差分割り当て用Calendarオブジェクトを次で取得した所、 Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); 正常に計算結果を求めることができている模様です。 不具合の原因は私のコードにありました。 お手間を頂き、とても役に立つご助言、誠にありがとうございました。 心より、御礼申し上げます。