`
bask
  • 浏览: 146687 次
  • 性别: Icon_minigender_1
  • 来自: 宇宙
社区版块
存档分类
最新评论

打印日历格式

J# 
阅读更多
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中,我们可以使用`java.util.Calendar`类来创建和管理日历对象,而`java.text.SimpleDateFormat`类则用于格式化日期输出。下面...

    打印日历c#程序源代码

    在C#编程环境中,创建一个能够打印日历的程序是一项基础但实用的任务。这个程序的核心是利用C#的日期和时间处理能力,结合控制台输出或者图形用户界面(GUI)来展示日历。下面我们将详细探讨如何实现这样一个功能,...

    JAVA课程设计打印日历含GUI

    总的来说,这个"JAVA课程设计打印日历含GUI"项目是一个很好的实践,涵盖了Java编程的多个方面,包括面向对象编程、图形用户界面设计和日期时间处理,对于提升学生的综合技能大有裨益。通过完成这个项目,学生不仅能...

    C语言打印日历设计

    大学简单打印日历作业,C语言程序设计代码!

    全世界最简单的js打印日历

    用javascript面向对象的方法,加上清晰的思路,只用几行代码就做出了一个日历

    打印日历程序的一种实现

    具体到提供的两个源文件,`querythemonthcalendar.c`可能包含了获取用户输入并调用相关函数来打印日历的代码,而`calendar.c`可能包含了实际的日历计算和输出格式化的方法。在`calendar.c`中,可能有定义了一个或多...

    打印一份日历

    10. **测试**:编写单元测试来确保打印日历的代码能够正确工作,特别是在处理边界条件(如二月的闰年和非闰年)时。 通过理解以上知识点,你可以创建一个基本的日历打印程序,并根据需要进行扩展,如添加节假日显示...

    c++打印日历,可以打印任意年的日历

    在C++编程中,打印日历是一项常见的任务,它涉及到日期和时间的处理。下面将详细解释如何使用C++来实现这个功能,特别是在VC6环境下。 首先,我们需要了解C++中的日期表示。在标准库中,`&lt;ctime&gt;`头文件提供了处理...

    c++ 日历打印

    设计c++程序,打印2010年1月及以后的指定月份的日历,要求至少可以打印某月的单月日历,如图1所示。更高的要求是可以打印某年的日历,每行打印3个月,月份间额外空2格,如图2所示。已知2010年1月1日是星期五。要求...

    打印日历程序[打印日历程序]-精品源代码 打印日历程序[打印日历程序]-精品源代码

    打印日历程序[打印日历程序]-精品源代码 打印日历程序[打印日历程序]-精品源代码

    2018年日历表(A4完美打印版)修正版

    在压缩包子文件的文件名称列表中,我们看到三种不同格式的文件:“2018年日历表(A4完美打印版).pdf”是PDF格式,这是一种通用的文档格式,可以在各种设备和操作系统上阅读,保证了格式的一致性;“2018年日历表(A4...

    可以打印任何年份的日历

    在IT领域,创建一个能打印任意年份日历的程序是一项常见的任务,它涉及到日期处理、格式化输出以及可能的用户交互。这个程序的核心在于理解公历的规则,特别是闰年的计算方法,以及如何构建一个日历网格。下面将详细...

    使用Calendar类打印基于控制台的日历

    本程序主要就是使用了Calendar类来打印出基于控制台的日历

    简单日历打印.java

    //根据用户从键盘输入的请求,在Java控制台中打印对应月份的日历。//

    2024年日历表A4纸完美打印版.doc

    【2024年日历表A4纸完美打印版】是一个方便个人和企业规划时间的实用工具,尤其适合那些需要频繁安排会议、活动或家庭事务的用户。这个日历文档是按照A4纸张尺寸设计的,确保了打印出来的效果清晰、整洁,且适合...

    2022年日历打印稿 一月一张 可直接打印 相当牛逼 相当完美

    在制作和打印日历时,可选用环保纸张和墨水,减少对环境的影响。同时,数字化日历的流行也提供了另一种解决方案,通过手机应用、电子设备的内置日历等方式,实现无纸化管理时间。 总结起来,2022年的日历打印稿是...

    输入年份月份打印出日历

    控制台输出日历,首先判断是否为闰年,然后根据输入的年份和月份 打印出日历

    2012年日历适合记事打印

    ### 2012年日历记事打印知识点解析 #### 一、概述 2012年的日历被设计成一种便于记录日常事务的形式,...综上所述,2012年的这款记事打印日历是一款集美观与实用于一体的产品,无论是个人使用还是家庭共享都非常合适。

    用c++完成的日历打印程序

    在提供的压缩包文件“程序设计报告——打印日历——B07041035”中,可能包含了关于这个项目的设计报告,详细描述了实现细节、算法选择和可能遇到的问题及解决方案。阅读这份报告可以帮助你更深入地理解这个程序的...

    2018年日历-完美A4打印版

    综上所述,"2018年日历-完美A4打印版"涉及到了日历的使用、打印技术、设计排版、文件格式等多个IT领域的知识点。无论是个人时间管理还是企业内部沟通,这些知识都是日常生活中不可或缺的。通过掌握这些要点,用户...

Global site tag (gtag.js) - Google Analytics