import java.util.*;
public class Calendar_Month {
int week; //存储某月的第一天是周几
int []dayofP = {31,28,31,30,31,30,31,31,30,31,30,31}; //平年每月多少天
int []dayofR = {31,29,31,30,31,30,31,31,30,31,30,31}; //闰年每月多少天
int dayofM; //所要求月份的最大天数
int year,month; //用于存储年和月的数值
GregorianCalendar objC; //创建一个日历的实例
/**无参数的构造方法,获得当前时间*/
public Calendar_Month(){
objC = new GregorianCalendar();
}
//设置该月的第一天是周几,以及设置该月的最大天数
void setDay(int[] a){
//设置该月的第一天是周几
if (a.length == 0){
objC.set(Calendar.DAY_OF_MONTH,1);
week = objC.get(Calendar.DAY_OF_WEEK);
month = objC.get(Calendar.MONTH);
year = objC.get(Calendar.YEAR);
}
else{
month = a[1];
year = a[0];
objC.set(year,month-1,1);
week = objC.get(Calendar.DAY_OF_WEEK);
}
//设置该月的最大天数
if(objC.isLeapYear(year)){
dayofM = dayofR[month - 1];
}
else{
dayofM = dayofP[month - 1];
}
}
/**此方法用于显示日历*/
void display(){
System.out.println("\t\t\t " + year + " 年 " + toDaXie(month) + " 月");
System.out.println("\t日\t一\t二\t三\t四\t五\t六");
int len = week-1;
for(int i = 0; i < week-1; i++){
System.out.print("\t ");
}
for (int i = 1; i <= dayofM; i++) {
System.out.print("\t"+i);
len++;
if(len == 7){
System.out.println();
len=0;
}
}
}
public String toDaXie(int n){
switch (n) {
case 1:
return "一";
case 2:
return "二";
case 3:
return "三";
case 4:
return "四";
case 5:
return "五";
case 6:
return "六";
case 7:
return "七";
case 8:
return "八";
case 9:
return "九";
case 10:
return "十";
case 11:
return "十一";
case 12:
return "十二";
default:
return " ";
}
}
public static void main(String[] args) {
Calendar_Month objCa = new Calendar_Month();
Scanner scanner = new Scanner(System.in);
int[] a = new int[2];
a[0] = scanner.nextInt();
a[1] = scanner.nextInt();
objCa.setDay(a);
objCa.display();
}
}
输出结果为:
2010 5
2010 年 五 月
日 一 二 三 四 五 六
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 31
附从网上找的一个程序:StdOut.print和System.out.println()一样功能,可代替
public class Main {
public static int getWeek(int yr, int mo, int day) {
int a = (14 - mo) / 12, y = yr - a, m = mo + (12 * a) - 2;
return (day + y + y / 4 - y / 100 + y / 400 + (31 * m) / 12) % 7;
}
public static int getMonth(int y, int m) {
if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8
|| m == 10 || m == 12)
return 31;
if (m == 4 || m == 6 || m == 9 || m == 11)
return 30;
if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0)
return 29;
else
return 28;
}
public static void menology() {
int year = StdIn.readInt(), month = StdIn.readInt();
String[] showMonth = { "一", "二", "三", "四", "五", "六", "七", "八", "九",
"十", "十一", "十二" };
StdOut.println(" " + year + "年" + showMonth[month - 1] + "月");
StdOut.print("日" + " " + "一" + " " + "二" + " " + "三" + " " + "四" + " "
+ "五" + " " + "六");
System.out.println();
int m = getMonth(year, month);
for (int i = 0; i < m; i++) {
int w = getWeek(year, month, (i + 1));
if (i == 0) {
for (int j = w; j > 0; j--)
StdOut.print(" ");
}
if (i < 9)
StdOut.print(" " + (i + 1) + " ");
else
StdOut.print((i + 1) + " ");
if ((w == 6) || ((i + 1) == m))
StdOut.println();
}
}
public static void main(String[] args) {
menology();
}}
分享到:
相关推荐
这是一个java获取当前月历的程序,适合学习javaSE的同学,使用GUI界面
用java写的月历小程序,不是很复杂,功能也不多。可以查看上下月,显示星期几,一般的实验要求应该符合。
那天看见有人用C++编写了一个简单的输入年然后通过Unix时间戳来获得...或者输入[示例]:java AutoCalendar 6 2012(这里是获取2012年6月的日历) 来获取其它时间的月历。 资源内容:两个java源文件和两个class生成文件。
用java编写的简单月历。由于是初学,请各位多多指教!!
利用java语言将输入的日期进行日历输出,标注输入的日期。简单小程序,适合初学者,欢迎交流
实验要求:根据给定的年份、月份,打印相应的月历。
用另一种方法实现的月历上传的文件时asm文件用masm便宜链接后方可运行
用汇编实现的小月历,输入月份,天数和第一天星期几,程序就会输出一个月历
本程序可查询任何年月的月历表,不同于大多数的万年历只能查询1900年以后的月历。
1900年1月1日周一 输出1900年后的任何一年的一个月份 你将得到该月的月历
C语言编写的简单月历查询 开源!!!!!!
课程项目,VC++ 6.0工程,输出指定时间之内的日历,输出格式与挂历上的格式一致,即最上方显示月份和年份,上方显示为星期几,下方是日期
以1900.1.1为起点。输入年月日得到日期和月历表。
程序实现自动生成月历墙纸以及水印图片两个功能来演示。
java编写的日历类程序,输入年份和月份,打印出该月的日历 都是在控制台下输入输出的 例如输入2011年9月份,会输出 日 一 二 三 四 五 六 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ……………………
关于java的日历小程序,实现了月历的输出,日期的判断,和两个日期的相差天数。
本篇文章是对使用c#输出本月月历的实现的代码进行了详细的分析介绍,需要的朋友参考下
VC编程实现在程序中使用月历控件,适合初学者
js 特效 html 特效 简单月历显示 js 特效 html 特效 简单月历显示
本程序功能:(1)通过Java编译器运行,实现图形界面。 (2)能以月历形式显示日期与星期。 (3)支持用户自己选择年份、月份及日期,并且所有的选择都是用下拉菜单的形式。 (4)通过点击“查看”来刷新日历。 ...