java 实现万年历

时间:2021-05-23 11:08:31

     以前初学java写万年历,都是采用基本的算法求出是否闰年闰月 计算公式如下

  

int year = 2014, month = 8, total = 0;

		if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8
				|| month == 10 || month == 12) {
			total = 31;
		} else if (month == 2) {
			if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
				total = 29;
			} else {
				total = 28;
			}
		} else {
			total = 30;
		}
total 即为当月天数

忽然觉得,其实java 有个Calendar类 这个就可以获取当月有多少天,实现日历的核心就是获取当月有多少天。

因项目需要只需列出当月日历即可,无需其他

编写代码 生成html

package Str;

import java.util.Calendar;
/**
 * 
 * 
 * @project Tool
 * @type Test8
 * @Description 
 * @author xuyw
 * @email xyw10000@163.com
 * @date 2014-8-9 下午01:45:02
 * @version 1.0
 *
 */
public class Test8 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Calendar calendar = Calendar.getInstance();
		calendar.add(Calendar.MONTH, 0);
		calendar.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天
		int firstDay = calendar.get(Calendar.DAY_OF_WEEK) - 1;
		int monthDays = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);// 当月最后一天

		StringBuilder sbd = new StringBuilder();
		sbd.append("<table cellspacing='0' style='background: url(./img/body.png);'>");
		sbd.append("<thead><tr>");
		sbd
				.append("<th>星期天</th><th>星期一</th><th>星期二</th><th>星期三</th><th>星期四</th><th>星期五</th><th>星期六</th>");
		sbd.append("</tr></thead>");
		sbd.append("<tbody><tr>");
		// 第一行
		int weekend = 0;// 每周的最后一天的日期
		for (int i = 0; i < 7; i++) {
			if (i < firstDay) {
				sbd.append("<td></td>");
			} else {
				sbd.append("<td>" + (i - firstDay + 1) + "</td>");
			}
			weekend = i - firstDay + 1;
		}
		sbd.append("</tr>");
		while (weekend < monthDays) {
			sbd.append("<tr>");

			for (int i = 0; i < 7; i++) {
				if (weekend + i < monthDays)// 数字小于等于当前月的最后一天
				{
					sbd.append("<td>" + (i + weekend + 1) + "</td>");
				} else {
					sbd.append("<td></td>");
				}

			}
			sbd.append("</tr>");
			weekend += 7;// 周末再加7天
		}

		sbd.append("<tbody></table>");
		System.out.println(sbd.toString());
	}
}

先前测试就用控制台生成html标签   将生成的html标签在页面展示即可 效果图如下 

java 实现万年历

css 

* {
	/* old-style reset here :) */
	border: 0px;
	padding: 0px;
}
body {
	font-family: Helvetica;
	background: white;
	text-align: center;
	/* background: url(../img/body.png) repeat-x; */}
body h1 {
	padding-top: 20px;
	font-size: 36px;
	color: #335;
}
p{font-size:26px;}
table {
	border-collapse: separate;
	border: 1px solid #9DABCE;
	border-width: 1px 1px 1px 1px;
	margin: 10px auto;
	font-size: 30px;
}


td, th {
	width: 81px;
	height: 81px;
	text-align: center;
	vertical-align: middle;
	/*background: url(../img/cells.png);*/
	color: #444;
	position: relative;
}
th {
	height: 30px;
	font-weight: bold;
	font-size: 14px;
}

td.sign_in {
	background-position: 81px 0px;
	color: red;
}

td.sign_no{
    background: url(../img/cells.png);
}