import java.util.Calendar;
public class BlogCalendar {
/**
* 生成 Blog 日历 HTML 代码。
* @param year 年
* @param month 月(一月为 1)
* @param dates 日期列表
* @param urls 文章 URL 列表
* @return 日历 HTML 代码
*/
public static String getCalendarHtml(int year, int month, int[] dates, String[] urls) {
if (month < 1 || month > 12) return null;
if (dates == null || urls == null) return null;
if (dates.length != urls.length) return null;
StringBuilder sb = new StringBuilder();
Calendar ca = Calendar.getInstance();
ca.set(year, month - 1, 1);
final int week = ca.get(Calendar.DAY_OF_WEEK) - 1;
ca.add(Calendar.MONTH, 1);
ca.add(Calendar.DATE, -1);
final int days = ca.get(Calendar.DATE);
sb.append("<table border=\"1\" cellpadding=\"6\" cellspacing=\"0\">\n");
for (int r = 0, n = 1; r < 6; ++r) {
sb.append("\t<tr>\n");
for (int c = 0; c < 7; ++c) {
if (r == 0 && c < week) {
sb.append("\t\t<td colspan=\"");
sb.append(week);
sb.append("\"> </td>\n");
c = week;
}
if (n <= days) {
sb.append("\t\t<td>");
int idx = -1;
for (int i = 0; i < dates.length; ++i) {
if (dates[i] == n) {
idx = i;
break;
}
}
if (idx == -1) {
sb.append(n);
} else {
sb.append("<a href=\"");
sb.append(urls[idx]);
sb.append("\">");
sb.append(n);
sb.append("</a>");
}
sb.append("</td>\n");
++n;
} else {
sb.append("\t\t<td colspan=\"");
sb.append(7 - c);
sb.append("\"> </td>\n");
c = 6;
}
}
sb.append("\t</tr>\n");
}
sb.append("</table>\n");
return sb.toString();
}
//测试代码
public static void main(String[] args) {
String s = getCalendarHtml(
2008, 7,
new int[] {1, 12, 26},
new String[] {"http://hi.csdn.net/sagezk", "http://www.csdn.net", "http://www.g.cn"}
);
System.out.println(s);
}
}