package cn.com.test;
import java.util.Calendar;
import static java.lang.System.out;
public class Demo {
static String[] MONTH = new String[]{"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
static String[] WEEK = new String[]{"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
/**
* 设置年月返回Calendar
*
* @param year
* @param month
* @return
*/
public static Calendar getCalendar(int year, int month) {
Calendar calendar = Calendar.getInstance();
if (year != 0)
calendar.set(Calendar.YEAR, year);
if (month != 0)
calendar.set(Calendar.MONTH, month-1);
return calendar;
}
/**
* 设置年月返回year的上个月Calendar
*
* @param year
* @param month
* @return
*/
public static Calendar getPreCalendar(int year, int month) {
Calendar calendar = Calendar.getInstance();
if (year != 0)
calendar.set(Calendar.YEAR, year);
if (month == 0)
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH));
else
calendar.set(Calendar.MONTH, month-2);
return calendar;
}
/**
* 返回日历正式格式
*
* @param year
* @param month
* @return
*/
public static Calendar getCalendarYM(int year,int month) {
Calendar calendar = getCalendar(year,month);
//设置星期的第一天为星期天
calendar.setFirstDayOfWeek(Calendar.SUNDAY);
//设置每月的第一天
calendar.set(Calendar.DAY_OF_MONTH,1);
return calendar;
}
/**
* 打印日历格式
*
* @param year
* @param month
*/
public static void printCalendar(int year,int month) {
String[] days = new String[42];
Calendar calendar = getCalendarYM(year, month);
//第几天开始
int firstDay = calendar.get(Calendar.DAY_OF_WEEK) - 1;
//共几天
int maxDays = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
for (int i = 0; i < maxDays; i++) {
days[firstDay + i] = String.valueOf(i + 1);
}
for(int i=0;i<WEEK.length;i++) {
out.print("\t" + WEEK[i]);
}
out.println("\n");
for(int j=0;j<6;j++) {
for(int i=j*7;i<(j+1)*7;i++) {
out.print("\t" + (days[i]==null ? "" : days[i]));
}
out.println("\n");
}
}
/**
* 打印日历格式
*
* @param year
* @param month
* @param day
*/
public static void printCalendar(int year,int month,int day) {
//总天数
String[] days = new String[42];
Calendar dayCalendar = Calendar.getInstance();
//当天
int today = day;
if(today == 0)
today = dayCalendar.get(Calendar.DAY_OF_MONTH);
Calendar calendar = getCalendarYM(year, month);
//第几天开始
int firstDay = calendar.get(Calendar.DAY_OF_WEEK) - 1;
//共几天
int maxDays = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
//填充天数
for (int i = 0; i < maxDays; i++) {
days[firstDay + i] = String.valueOf(i + 1);
}
//上个月的最后几天
Calendar preCalendar = getPreCalendar(year, month);
int preMaxDays = preCalendar.getActualMaximum(Calendar.DAY_OF_MONTH);
//后几天开始的下标
int beginDay = firstDay - 1;
//上个月的后几天信息
Integer[] preDays = new Integer[firstDay];
for(int i=0;i<preDays.length;i++) {
preDays[i] = preMaxDays --;
}
//下个月的初始天
int nextDay = 1;
out.println("\t\t\t" + calendar.get(Calendar.YEAR)+"年"+(calendar.get(Calendar.MONTH)+1)+"月"+calendar.get(Calendar.DAY_OF_MONTH)+"日");
for(int i=0;i<WEEK.length;i++) {
out.print("\t" + WEEK[i]);
}
out.println("\n");
for(int j=0;j<6;j++) {
for(int i=j*7;i<(j+1)*7;i++) {
out.print("\t" +(days[i]==null ? (i<=firstDay ? preDays[beginDay--] : nextDay++) : (Integer.parseInt(days[i]) == today ? "*"+days[i] : days[i])));
}
out.println("\n");
}
}
public static void main(String[] args) {
printCalendar(0,6,0);
}
}
分享到:
相关推荐
大学简单打印日历作业,C语言程序设计代码!
用javascript面向对象的方法,加上清晰的思路,只用几行代码就做出了一个日历
打印日历c#程序源代码 输入年月,可显示当月的日历。。。。。。。。。。。。。。。。。。。。。
JAVA课程设计 打印日历 GUI 完整代码
根据一定规律打印特定年月的日历信息 特点:可扩展
设计c++程序,打印2010年1月及以后的指定月份的日历,要求至少可以打印某月的单月日历,如图1所示。更高的要求是可以打印某年的日历,每行打印3个月,月份间额外空2格,如图2所示。已知2010年1月1日是星期五。要求...
打印日历程序[打印日历程序]-精品源代码 打印日历程序[打印日历程序]-精品源代码
本程序实现打印日历,可以输入年,即可打印出该年的每个月的日历;输入年和月分,则可以打印出这年这月的日历信息。
用C++编写的一个万能历程序,可以实现调用系统函数,查询当年的日历,和查询任意一年日历的功能,对系统函数的调用有很好的示范功能。
c++打印日历可以打印任意年的日历,用vc6编程,还算比较好的一段程序
本程序主要就是使用了Calendar类来打印出基于控制台的日历
//根据用户从键盘输入的请求,在Java控制台中打印对应月份的日历。//
控制台输出日历,首先判断是否为闰年,然后根据输入的年份和月份 打印出日历
打印一份日历,主要是关于方法的抽象方面,是一个简单有趣的小程序,稍作修改便可显示除节假日等其他功能。由于急需积分,便草草上传了。
2024年日历表A4纸完美打印文档,word版本可编辑,无编辑需求的用户可直接打印
java打印日历实例
输入:任何年份,例2010 输出:当年日历
2023年日历打印稿 一月一张 可直接打印 相当牛逼 相当完美,可以随意下载,随意下载,随意打印。2023年日历打印稿 一月一张 可直接打印 相当牛逼 相当完美,可以随意下载,随意下载,随意打印。2023年日历打印稿 一...
2021年日历表A4纸打印版.xls
输入某年打印该整年的日历,输入某年某月打印该月的日历,输入某年某月某天打印改天是星期几