カレンダー

  • このエントリーをはてなブックマークに追加
  • 人気ブログランキング

今回は、カレンダーです。

 

最初は今月の表示です。本日の部分は紫色になります。

 

また、
index.cfm?ddate=20140404
とすると、2014年4月が表示され、4日の部分が紫色になります

 

左上の「<<」を押すと前月が表示され、

「>>」を押すと来月が表示されます。

 

こちらをクリックしてください。

 

※海外のホスティングサービスを使用していますので、時間は海外仕様です。

calendar.cfm

<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')#">&lt;&lt;</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')#">&gt;&gt;</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="&nbsp;"></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>
  • このエントリーをはてなブックマークに追加
  • 人気ブログランキング

この記事に関連する記事一覧

最近の投稿
カテゴリー
タグ
アーカイブ
プロフィール