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);
}
}
分享到:
相关推荐
"打印日历"这个功能涉及到对日历对象的操作,以及如何按照特定格式输出日期信息。在Java中,我们可以使用`java.util.Calendar`类来创建和管理日历对象,而`java.text.SimpleDateFormat`类则用于格式化日期输出。下面...
在C#编程环境中,创建一个能够打印日历的程序是一项基础但实用的任务。这个程序的核心是利用C#的日期和时间处理能力,结合控制台输出或者图形用户界面(GUI)来展示日历。下面我们将详细探讨如何实现这样一个功能,...
总的来说,这个"JAVA课程设计打印日历含GUI"项目是一个很好的实践,涵盖了Java编程的多个方面,包括面向对象编程、图形用户界面设计和日期时间处理,对于提升学生的综合技能大有裨益。通过完成这个项目,学生不仅能...
大学简单打印日历作业,C语言程序设计代码!
用javascript面向对象的方法,加上清晰的思路,只用几行代码就做出了一个日历
具体到提供的两个源文件,`querythemonthcalendar.c`可能包含了获取用户输入并调用相关函数来打印日历的代码,而`calendar.c`可能包含了实际的日历计算和输出格式化的方法。在`calendar.c`中,可能有定义了一个或多...
10. **测试**:编写单元测试来确保打印日历的代码能够正确工作,特别是在处理边界条件(如二月的闰年和非闰年)时。 通过理解以上知识点,你可以创建一个基本的日历打印程序,并根据需要进行扩展,如添加节假日显示...
在C++编程中,打印日历是一项常见的任务,它涉及到日期和时间的处理。下面将详细解释如何使用C++来实现这个功能,特别是在VC6环境下。 首先,我们需要了解C++中的日期表示。在标准库中,`<ctime>`头文件提供了处理...
设计c++程序,打印2010年1月及以后的指定月份的日历,要求至少可以打印某月的单月日历,如图1所示。更高的要求是可以打印某年的日历,每行打印3个月,月份间额外空2格,如图2所示。已知2010年1月1日是星期五。要求...
打印日历程序[打印日历程序]-精品源代码 打印日历程序[打印日历程序]-精品源代码
在压缩包子文件的文件名称列表中,我们看到三种不同格式的文件:“2018年日历表(A4完美打印版).pdf”是PDF格式,这是一种通用的文档格式,可以在各种设备和操作系统上阅读,保证了格式的一致性;“2018年日历表(A4...
在IT领域,创建一个能打印任意年份日历的程序是一项常见的任务,它涉及到日期处理、格式化输出以及可能的用户交互。这个程序的核心在于理解公历的规则,特别是闰年的计算方法,以及如何构建一个日历网格。下面将详细...
本程序主要就是使用了Calendar类来打印出基于控制台的日历
//根据用户从键盘输入的请求,在Java控制台中打印对应月份的日历。//
【2024年日历表A4纸完美打印版】是一个方便个人和企业规划时间的实用工具,尤其适合那些需要频繁安排会议、活动或家庭事务的用户。这个日历文档是按照A4纸张尺寸设计的,确保了打印出来的效果清晰、整洁,且适合...
在制作和打印日历时,可选用环保纸张和墨水,减少对环境的影响。同时,数字化日历的流行也提供了另一种解决方案,通过手机应用、电子设备的内置日历等方式,实现无纸化管理时间。 总结起来,2022年的日历打印稿是...
控制台输出日历,首先判断是否为闰年,然后根据输入的年份和月份 打印出日历
### 2012年日历记事打印知识点解析 #### 一、概述 2012年的日历被设计成一种便于记录日常事务的形式,...综上所述,2012年的这款记事打印日历是一款集美观与实用于一体的产品,无论是个人使用还是家庭共享都非常合适。
在提供的压缩包文件“程序设计报告——打印日历——B07041035”中,可能包含了关于这个项目的设计报告,详细描述了实现细节、算法选择和可能遇到的问题及解决方案。阅读这份报告可以帮助你更深入地理解这个程序的...
综上所述,"2018年日历-完美A4打印版"涉及到了日历的使用、打印技术、设计排版、文件格式等多个IT领域的知识点。无论是个人时间管理还是企业内部沟通,这些知识都是日常生活中不可或缺的。通过掌握这些要点,用户...