今回は、カレンダーです。
最初は今月の表示です。本日の部分は紫色になります。
また、
index.cfm?ddate=20140404
とすると、2014年4月が表示され、4日の部分が紫色になります
左上の「<<」を押すと前月が表示され、
「>>」を押すと来月が表示されます。
こちらをクリックしてください。
※海外のホスティングサービスを使用していますので、時間は海外仕様です。
<cfparam name="url.ddate" default="#dateformat(now(),'yyyymmdd')#"> <!---解説 urlからの指定がない場合、本日の日付をセットしています。 ---> <cfset yy=left(url.ddate,4)> <cfset mm=mid(url.ddate,5,2)> <cfset dd=mid(url.ddate,7,2)> <!---解説 年、月、日の変数として分解します。 urlからの変数が年月の場合がほとんどなので、 日の部分はmid関数で取得しました。 日の部分がない場合はヌルとなります。 日の部分までurl指定があった場合は、 日の部分が紫色となります。 ---> <cfset ddate=CreateDate(yy,mm,1)> <!---解説 月始めの年月日を取得します。 ---> <cfset lastDay=DaysInMonth(ddate)> <!---解説 月末の日付を取得します。 ---> <cfset weekList=""> <cfloop index="i" from="1" to="#lastDay#"> <cfset weekList=weekList & i> <cfif i lt lastDay> <cfset weekList=weekList & ","> </cfif> </cfloop> <!---解説 月末までの日付をリスト形式にします。 ただ単に 1,2,3,4,....,30 とするだけです。 ---> <cfset weekList=RepeatString("0,",DayOfWeek(ddate)-1) & weekList> <!---解説 1日より前に0をセットします。 2002年11月の場合は、 0,0,0,0,0,1,2,3,4,...,30 となります。 DayOfWeek関数では曜日を数値として返しています。 1(日曜日)~7(土曜日)の範囲の整数です。 ---> <cfset weekList=weekList & RepeatString(",0",7-DayOfWeek(CreateDate(yy,mm,lastDay)))> <!---解説 月末よりあとに0をセットします。 2002年11月の場合はちょうど土曜日で終わっていますので0が追加されません。 ---> <cfoutput> <table border="0" cellspacing="0" cellpadding="0" bgcolor="black"> <tr> <td> <table border="0" cellspacing="1" cellpadding="1"> <tr align="center" bgcolor="black"> <td bgcolor="Lime"> <a href="index.cfm?ddate=#DateFormat(DateAdd('m',-1,ddate),'yyyymm')#"><<</a></td> <!---解説 url変数ddateに前月をセットしています。 ---> <td colspan="5" bgcolor="##FF9900">#yy#年#mm#月</td> <td bgcolor="Lime"> <a href="index.cfm?ddate=#DateFormat(DateAdd('m',1,ddate),'yyyymm')#">>></a></td> </tr> <tr align="center" bgcolor="White"> <td><font color="Red">日</font></td> <td>月</td> <td>火</td> <td>水</td> <td>木</td> <td>金</td> <td><font color="Blue">土</font></td> </tr> <cfloop index="i" from="1" to="#listLen(weekList)#"> <cfif (i mod 7) eq 1><tr bgcolor="White"></cfif> <cfset tmp=ListGetAt(weekList,i)> <cfif tmp eq 0><cfset tmp=" "></cfif> <cfif tmp eq dd> <td align="right" bgcolor="Purple"><font color="White">#tmp#</font></td> <cfelse> <cfif (i mod 7) eq 1><cfset tmp="<font color='Red'>" & tmp & "</font>"></cfif> <cfif (i mod 7) eq 0><cfset tmp="<font color='Blue'>" & tmp & "</font>"></cfif> <td align="right">#tmp#</td> </cfif> <cfif (i mod 7) eq 0></tr></cfif> </cfloop> <!---解説 カレンダーの日付部分をセットしています。 weekList変数が、7で割ることにより、 うまくカレンダーとして編集できます。 ---> </table> </td> </tr> </table> </cfoutput>