您的位置:首页 > 编程语言 > Java开发

java类生成日历自己写的,可以输出到html页面

2015-04-28 07:31 393 查看
所有的类和方法都在这里面了,大家可以参考一下,自我感觉写的不是很好,但是效果实现了!

import java.util.Calendar;

import java.util.Date;

import com.hzpm.util.DateUtil;

public class StartEnd {

/**

* @param args

* @throws Exception

*/

public static void main(String[] args) throws Exception {

int currentMonthNum = getCurrentMonthLastDay();// 获取指定的年份月份共有多少天

int rows = getRows(2014, 3);// 返回指定的月份共计有多少行

int indexNum = getStartNum(2014, 3);

int startNum = 1;

String tableStr = "<table>\n<tr><td>日</td><td>一</td><td>二</td><td>三</td><td>四</td><td>五</td><td>六</td></tr>";

for (int i = 1; i <= rows; i++) {

tableStr+="<tr>";

if (i == 1) {

if (indexNum == 1) {

for (int j = 1; j <= 7; j++) {

tableStr+="<td><a href='#'>" + startNum + "</a></td>";

startNum++;

}

}

if (indexNum == 2) {

for (int k = 1; k <= 1; k++) {

tableStr+="<td>--</td>";

}

for (int j = 1; j <= 6; j++) {

tableStr+="<td><a href='#'>" + startNum + "</a></td>";

startNum++;

}

}

if (indexNum == 3) {

for (int k = 1; k <= 2; k++) {

tableStr+="<td>--</td>";

}

for (int j = 1; j <= 5; j++) {

tableStr+="<td><a href='#'>" + startNum + "</a></td>";

startNum++;

}

}

if (indexNum == 4) {

for (int k = 1; k <= 3; k++) {

tableStr+="<td>--</td>";

}

for (int j = 1; j <= 4; j++) {

tableStr+="<td><a href='#'>" + startNum + "</a></td>";

startNum++;

}

}

if (indexNum == 5) {

for (int k = 1; k <= 4; k++) {

tableStr+="<td>--</td>";

}

for (int j = 1; j <= 3; j++) {

tableStr+="<td><a href='#'>" + startNum + "</a></td>";

startNum++;

}

}

if (indexNum == 6) {

for (int k = 1; k <= 5; k++) {

tableStr+="<td>--</td>";

}

for (int j = 1; j <= 2; j++) {

tableStr+="<td><a href='#'>" + startNum + "</a></td>";

startNum++;

}

}

if (indexNum == 7) {

for (int k = 1; k <= 6; k++) {

tableStr+="<td>--</td>";

}

for (int j = 1; j <= 1; j++) {

tableStr+="<td><a href='#'>" + startNum + "</a></td>";

startNum++;

}

}

}

if (i > 1 & i < rows) {

for (int j = 1; j <= 7; j++) {

tableStr+="<td><a href='#'>" + startNum + "</a></td>";

startNum++;

}

}

if (i == rows) {

int temp = currentMonthNum - startNum;

for (int j = 0; j <= temp; j++) {

tableStr+="<td><a href='#'>" + startNum + "</a></td>";

startNum++;

}

}

tableStr+="</tr>";

}

tableStr+="</table>";

System.out.println(tableStr);

}

/***

* 根据年月返回相关的行数

*

* @param year

* @param month

* @return

* @throws Exception

*/

public static int getRows(int year, int month) throws Exception {

int num = 0;// 标记月份第一天从周几开始

int rows = 0;// 标记本月分共有多少行

// 得到月份一号是星期几

String week = getWeekOfFirstDay(year, month);

if (week.equals("星期日")) {

num = 7;

}

if (week.equals("星期一")) {

num = 6;

}

if (week.equals("星期二")) {

num = 5;

}

if (week.equals("星期三")) {

num = 4;

}

if (week.equals("星期四")) {

num = 3;

}

if (week.equals("星期五")) {

num = 2;

}

if (week.equals("星期六")) {

num = 1;

}

int currentMonthNum = getCurrentMonthLastDay();// 获取指定的年份月份共有多少天

int num1 = 0;// 取余的值

int num2 = 0;// 取整的值

int num3 = 0;// 除不尽+2

int num4 = 0;// 除尽+1

num1 = (currentMonthNum - num) % 7;

num2 = (currentMonthNum - num) / 7;

num3 = num2 + 2;

num4 = num2 + 1;

rows = num1 == 0 ? num4 : num3;

return rows;

}

/***

* 返回第一天处于第几个位置

*

* @param year

* @param month

* @return

* @throws Exception

*/

public static int getStartNum(int year, int month) throws Exception {

int num = 0;

// 得到月份一号是星期几

String week = getWeekOfFirstDay(year, month);

if (week.equals("星期日")) {

num = 1;

}

if (week.equals("星期一")) {

num = 2;

}

if (week.equals("星期二")) {

num = 3;

}

if (week.equals("星期三")) {

num = 4;

}

if (week.equals("星期四")) {

num = 5;

}

if (week.equals("星期五")) {

num = 6;

}

if (week.equals("星期六")) {

num = 7;

}

return num;

}

/**

* 返回指定月份的第一天是周几

*

* @return

* @throws Exception

*/

public static String getWeekOfFirstDay(int year, int month)

throws Exception {

String str = year + "-" + month + "-" + "01";

return getWeekOfDate(DateUtil.dateFormat(str));

}

/**

* 获取当前日期是星期几

*

* @param dt

* @return 当前日期是星期几

*/

public static String getWeekOfDate(Date dt) {

String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };

Calendar cal = Calendar.getInstance();

cal.setTime(dt);

int w = cal.get(Calendar.DAY_OF_WEEK) - 1;

if (w < 0)

w = 0;

return weekDays[w];

}

/**

* 取得当月天数

* */

public static int getCurrentMonthLastDay() {

Calendar a = Calendar.getInstance();

a.set(Calendar.DATE, 1);// 把日期设置为当月第一天

a.roll(Calendar.DATE, -1);// 日期回滚一天,也就是最后一天

int maxDate = a.get(Calendar.DATE);

return maxDate;

}

/**

* 得到指定月的天数

* */

public static int getMonthLastDay(int year, int month) {

Calendar a = Calendar.getInstance();

a.set(Calendar.YEAR, year);

a.set(Calendar.MONTH, month - 1);

a.set(Calendar.DATE, 1);// 把日期设置为当月第一天

a.roll(Calendar.DATE, -1);// 日期回滚一天,也就是最后一天

int maxDate = a.get(Calendar.DATE);

return maxDate;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: