
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
カレンダーはなかなか難しいです。
ぼくも縦軸に曜日がそろう型のカレンダーを作りましたが、プログラミングに約二三週間かかりました。実際の構想にはもっと時間がかかりました。(学生なので、時間がないとは言えども、半年くらいかかった。)まず、自己流今月のカレンダーの作り方。
・今の月の1日の曜日を調べる。
・配列に空白の曜日に0を入れる
例:今月の1日が金曜日(5)なら日曜日(0)との空白分、0を5つ配列に追加。
曜日は日曜日の0に始まり、土曜日の6で終わるとする。
・最終日までの日数を、配列に追加
例:6月は30日まであるので、配列に1~30を入れる。
結果、今月は0,0,0,0,0,1,2,3,4,5,……,28,29,30というデータが、配列に入る。
ここまでで一つの自作関数とします。
で、後はカレンダーの描写ですが、上の関数の結果(カレンダーの数字)が、配列[@kal]に入っているとすると
for(;@kal;){#ループA
for($n=0;$n<=6;++$n){#ループB
$d = shift(@kal);#数字を取り出す。
if($d==0){$d=" ";}else{}#0の場合、空白代入
printf("%3s",$d);#出力C
}
}
このようにすれば、カレンダーが描けます。配列の最初に(日,月,火,水,木,金,土)の値を入れれば、一番上に曜日まで入って、さらにカレンダーになります。
HTML出力させるなら、ループAの外側に<table>を、ループBの外側に<tr>を、そして出力Cの数字を囲むように<td>を配置すれば、テーブルになります。
問題は、指定した年と月からカレンダーを作成すること。
上の関数で、今月の1日の曜日が分かればカレンダーができるようになったので、後は指定した○年○月1日の曜日が分かれば、後は同じように出来ます。
つまり、その日まで、今日から何日前なのか、後なのかを計算等々で導き、その日数*24*60*60で、その日までの秒数を出し、それをtime()関数の中に放り込んでやればいいです。
ここと一つ上の質問の内容からして、あなたは恐らく初心者ですね?
いい機会です。今から何日前が、求めたい○年○月の1日になるか、悪戦苦闘してください。きっと、ifの不等号に=があるかないかの大切さがよく分かります。
一応ヒントを出しておきます。一年かけてでもいいので、やる価値のあるプログラムです。
・time()の中に、+の値を入れると、未来の時間が分かる。-なら過去。
・時間は、秒単位で考える。つまり、○日前の時間情報が知りたいなら、日数(○)×24時間×60分×60秒で出る。
・二月にはうるう年がある。うるう年は、西暦が『4で割り切れる』ものであり、『100で割り切れたらだめ』で『400で割り切れる場合はいい』という条件がある。
ちなみに、ぼくは@kalを出力するのに、大体100行くらい使ってます。まぁ、空行とかもありますけど。
No.1
- 回答日時:
この回答への補足
もう少し詳しく言いますと、
UNIX環境でカレンダーを表示させるためにどんなcgiを作っていいのかがわからないのとそれを表示するときにどのようなhtmlのタグを入力するればいいのかがわからないんです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Dim flag(4) as boolean で配列...
-
Strawberry Perl for Windows ...
-
MATLABの関数で配列の要素を返...
-
エクセルVBAでTransposeの不思議
-
マクロ Publicでの配列定義
-
VBA 多次元配列を用いてグルー...
-
VBA 二次元配列 ループの書き方
-
perlで2次元配列をサブルーチ...
-
プログラミング アルゴリズム
-
VBA 条件
-
UWSCの終了の仕方
-
VBAでの一時停止と再開の方法
-
Do whileでExitせず、ループの...
-
テキストボックスの名前に変数...
-
VB.NETでFTPプログラム
-
xmplayの使い方
-
C言語でファクト関数を使わずに...
-
csh foreachで「*」でエラ...
-
Perlでハッシュや配列で重複す...
-
ListBox 複数選択 で オートフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのautofilter、criteriaの配...
-
エクセルVBAでTransposeの不思議
-
perlで2次元配列をサブルーチ...
-
Strawberry Perl for Windows ...
-
マクロ Publicでの配列定義
-
クラスに配列を渡す方法
-
リストボックスに縦スクロール...
-
二次元配列のインデックスについて
-
Dim flag(4) as boolean で配列...
-
与えられた配列の順にソートす...
-
Excel VBA ユーザーフォームの...
-
VBA 二次元配列の1つ目を増...
-
プログラミング アルゴリズム
-
複数の配列の全ての組み合わせ...
-
二次元配列における要素数のは...
-
VB6で配列の最大値を簡単に求め...
-
バイナリデータの検索(VB.NET2008)
-
VBA 二次元配列 ループの書き方
-
VBA 多次元配列を用いてグルー...
-
VBA 条件
おすすめ情報