Java tutorial
/******************************************************************************* * Copyright (c) 2004 BlueOxygen Technology. * All rights reserved. This program and the accompanying materials * are made available under the terms of the BlueOxygen Software License v1.0 * which accompanies this distribution, and is available at * * Contributors: * BlueOxygen Team - initial API and implementation *******************************************************************************/ import java.util.*; import java.text.SimpleDateFormat; /** * Class WebCalendar */ public class WebCalendar { // Constants //*----------------------------------------------------------------------*// // Member Variables //*----------------------------------------------------------------------*// /** */ protected GregorianCalendar m_gc; /** */ protected SimpleDateFormat m_sdf; // Public Methods and Accessors //*----------------------------------------------------------------------*// /** */ public WebCalendar() { m_gc = new GregorianCalendar(); m_sdf = new SimpleDateFormat(); } /** */ public void setYear(int _iYear) { m_gc.set(Calendar.YEAR, _iYear); } /** */ public void setMonth(int _iMonth) { m_gc.set(Calendar.MONTH, _iMonth); } /** */ public String getMonth() { m_sdf.applyPattern("MMMM"); return m_sdf.format(m_gc.getTime()).toString(); } /** */ public GregorianCalendar getCalendar() { return m_gc; } /** */ public String[] getDays() { String days[] = new String[m_gc.getMaximum(Calendar.DAY_OF_WEEK) - m_gc.getMinimum(Calendar.DAY_OF_WEEK) + 1]; m_gc.set(Calendar.DAY_OF_WEEK, 1); for (int i = 0; i < days.length; i++) { days[i] = m_sdf.format(m_gc.getTime()).toString(); m_gc.roll(Calendar.DAY_OF_WEEK, true); } return days; } /** */ public String renderOneMonth(String _sTableWidth, String _sCellWidth) //PrintWriter _out) { StringBuffer sb = new StringBuffer(); //out = response.getWriter(); sb.append("<table border='1' width='").append(_sTableWidth).append("'") .append(" cellspacing='0' cellpadding='0'>").append("<tr><td align='center' colspan='7'>") .append(getMonth()).append("</td></tr>").append("<tr>"); String days[] = getDays(); for (int i = 0; i < days.length; i++) { sb.append("<td width='").append(_sCellWidth).append("'").append(" align='center'>").append(days[i]) .append("</td>"); } sb.append("</tr>"); m_gc.set(Calendar.DAY_OF_MONTH, 1); boolean finish = false; for (;;) { sb.append("<tr>"); for (int i = 0; i < days.length; i++) { Date t = m_gc.getTime(); m_sdf.applyPattern("EEEE"); if (days[i].equals(m_sdf.format(t).toString())) { m_sdf.applyPattern("d"); sb.append("<td align='center'>").append(m_sdf.format(t).toString()).append("</td>"); if (m_gc.get(Calendar.DAY_OF_MONTH) == m_gc.getActualMaximum(Calendar.DAY_OF_MONTH)) { finish = true; break; } m_gc.roll(Calendar.DAY_OF_MONTH, true); } else { sb.append("<td align='center'> </td>"); } } sb.append("</tr>"); if (finish) break; } sb.append("</table>"); return sb.toString(); } }