いつもお世話になっております。
カレンダー一覧表示プログラムがあります。
http://lab.crahadoll.net/samples/script_euc/chap …
プログラムは下記になります。
http://lab.crahadoll.net/samples/script_euc/chap …
すみませんが、共に文字コードを「EUC」に変更してください。
これは、チェックボックスから年・月を選択し、
「月表示」をクリックすることにより
月一覧が表示されるというプログラムです。
2012▼ 01▼ [月表示]
日付
2012/01/01
2012/01/02
2012/01/03
2012/01/04
(省略)
2012/01/31
これを下記のように、
週表示にし1時間30分置きの表示を考えております。
2012▼ 01▼ 01▼ [週表示]
日付
2012/01/01 00:00
01:30
03:00
(省略)
21:00
22:30
2012/01/02 00:00
01:30
(省略)
22:20
2012/01/03
(省略)
2012/01/06
どのような変更を加えれば、
当問題はクリアーできますでしょうか?
なにとぞご教授のほどよろしくお願いします。
No.2
- 回答日時:
指定した年月日の週初の日付を求める。
これさえクリアすれば後は問題と言うほどのものではないかと思います。
この回答への補足
お世話になっております。
皆様のご意見により、
下記のようなスクリプトの形となりました。
が、なぜかif/elseの条件がperse_errorによりなりたちません。
if/ifはうまくいきますが、
if/elseがうまくいかないのです。
どこがいけないのでしょうか?
また、下記スクリプトにて
「ここは変更した方がよい」
という箇所等ございましたら、
あわせてご教授頂きたいと思います。
よろしくお願いします。
<table border="1">
<tr bgcolor="#ffd700">
<td>日付</td>
</tr>
<?php
$yyyy = 2006;
$mm = 8;
$ww = 2;
$wd1 = date("w", mktime(0, 0, 0, $mm, 1, $yyyy));
echo "<p>wd1 ".$wd1;
$wd1 = date("w", mktime(0, 0, 0, $mm, 1, $yyyy));
$wd2 = 7 * $ww - $wd1;
echo "<p>wd2 ".$wd2;
$d = 0;
$lastd = date("d", mktime(0, 0, 0, $mm + 1, 0, $yyyy));
echo "<p>lastd ".$lastd;
if ($ww == 1)
{
for ($i = 1; $i <= $wd2; $i++)
{
?>
<tr>
<?php
$ts = mktime($hh, $u, 0, $mm, $i, $yyyy);
$ymd = date("Y/m/d H:i", $ts);
?>
<td><?= $ymd ?></td>
<?php } ?>
<?php } ?>
<?php
if ($ww == 2)
//else
{
for ($i = $wd2 + 1; $i <= min($wd2 + 7,$lastd); $i++)
{
?>
<tr>
<?php
$ts = mktime($hh, $u, 0, $mm, $i, $yyyy);
$ymd = date("Y/m/d H:i", $ts);
?>
<td><?= $ymd ?></td>
<?php } ?>
<?php } ?>
</table>
No.3
- 回答日時:
1時間30分おきの表示は普通にできますよね?
それで、週表示ですが、
1.選択されている月の日数を取得
2.選択された年月の1日の曜日を取得
3.その二つを使用して何週あるかを取得
4.コンボボックスに表示
という流れになると思います。
年月日関係は全部 date() コマンドで取得できるはずですのでがんばって!!!
参考URL:http://jp2.php.net/manual/ja/function.date.php
この回答への補足
>1時間30分おきの表示は普通にできますよね?
すみません。
第一段階から理解できておりません。
90分(1時間30)で回して、
月末に処理を停止するスクリプトを作成しましたが、
最初の1:30は正常に出力されるのですが、
その後、1:30 1:31 1:32となってしまいます。
また、月末までループ処理させたいのですが、
この処理が正常にいけば、月末で止まりますか?
よろしくお願いします。
<?php
$lastd = date("Y 年 m 月 h時 i分", mktime(0, 0, 0, $mm, 1, $yyyy));
for ($u = 90; $u <= $lastd; $u++) {
?>
<tr>
<?php
$ts = mktime($hh, $u, 0, $mm, 1, $yyyy);
$ymd = date("Y/m/d H:i", $ts);
?>
<td><?= $ymd ?></td>
<?php } ?>
補足の件ですが、
下記の通りできましたので、
難問に取り掛かりたいと思います。
<?php
$lastd = date("d", mktime(0, 0, 0, $mm + 1, 0, $yyyy));
for ($i = 1; $i <= $lastd; $i++)
for ($u = 0; $u <= 1439; $u+=90) {
?>
<tr>
<?php
$ts = mktime($hh, $u, 0, $mm, $i, $yyyy);
$ymd = date("Y/m/d H:i", $ts);
?>
<td><?= $ymd ?></td>
<?php } ?>
No.4ベストアンサー
- 回答日時:
#1です。
週から日を取得するやつを前に作った事があります。
//############################################################
// 月初曜日取得関数
//概要 指定年月の月初曜日を取得する
//引数 $Date : 日付(yyyy-mm-dd)
//戻り値0:日曜 1:月曜 ・・・ 5:金曜 6:土曜
//############################################################
Function Get_FirstWeekday($Date) {
$Date = Date("Y-m", StrToTime($Date))."-01";
$Week = Date("w", StrToTime($Date));
Return $Week;
}
//############################################################
// 月末日取得関数
//概要 指定年月の月末日を取得する
//引数 $Date : 日付(yyyy-mm-dd)
//戻り値月末日
//############################################################
Function Get_LastDay($Date) {
$Year = Date("Y", StrToTime($Date));
$Month = Date("m", StrToTime($Date));
Switch ($Month) {
Case 1:
Case 3:
Case 5:
Case 7:
Case 8:
Case 10:
Case 12:
$LastDay = 31;
Break;
Case 4:
Case 6:
Case 9:
Case 11:
$LastDay = 30;
Break;
Case 2:
If (($Year % 4 == 0 And $Year % 100 <> 0) Or $Year % 400 == 0) {
$LastDay = 29;
} Else {
$LastDay = 28;
}
}
Return $LastDay;
}
//############################################################
// 指定日取得関数
//概要 指定年月、N週、N曜日の日を取得する
//引数 $Year : 年
//$Month : 月
//$WeekNum : N週
//$Weekday : N曜日(SUN,MON,TUE,WED,THU,FRI,SAT)
//戻り値日
//############################################################
//指定された曜日の日を取得
Function Get_Week2Day($Year, $Month, $WeekNum, $Weekday) {
//曜日に合ったインデックスを取得
Switch (StrToUpper($Weekday)) {
Case "SUN":Case 0: $Weekday = 0; Break;
Case "MON":Case 1: $Weekday = 1; Break;
Case "TUE":Case 2: $Weekday = 2; Break;
Case "WED":Case 3: $Weekday = 3; Break;
Case "THU":Case 4: $Weekday = 4; Break;
Case "FRI":Case 5: $Weekday = 5; Break;
Case "SAT":Case 6: $Weekday = 6; Break;
}
//月初の曜日
$FirstWeekday =Get_FirstWeekday($Year."-".$Month."-01");
//指定曜日が月初曜日より手前の場合
If ($Weekday < $FirstWeekday) {
$Day = (($WeekNum - 1) * 7) + ($Weekday + 1) + (7 - $FirstWeekday);
//指定曜日が月初曜日以降の場合
} Else {
$Day = (($WeekNum - 1) * 7) + $Weekday - ($FirstWeekday - 1);
}
Return $Day;
}
ご参考までに。月末日を取得するやつも必要ですね。
必ず7日間ループすわけではないので。
この回答への補足
お世話になっております。
皆様のご意見により、
下記のようなスクリプトの形となりました。
が、なぜかif/elseの条件がperse_errorによりなりたちません。
if/ifはうまくいきますが、
if/elseがうまくいかないのです。
どこがいけないのでしょうか?
また、下記スクリプトにて
「ここは変更した方がよい」
という箇所等ございましたら、
あわせてご教授頂きたいと思います。
よろしくお願いします。
<table border="1">
<tr bgcolor="#ffd700">
<td>日付</td>
</tr>
<?php
$yyyy = 2006;
$mm = 8;
$ww = 2;
$wd1 = date("w", mktime(0, 0, 0, $mm, 1, $yyyy));
echo "<p>wd1 ".$wd1;
$wd1 = date("w", mktime(0, 0, 0, $mm, 1, $yyyy));
$wd2 = 7 * $ww - $wd1;
echo "<p>wd2 ".$wd2;
$d = 0;
$lastd = date("d", mktime(0, 0, 0, $mm + 1, 0, $yyyy));
echo "<p>lastd ".$lastd;
if ($ww == 1)
{
for ($i = 1; $i <= $wd2; $i++)
{
?>
<tr>
<?php
$ts = mktime($hh, $u, 0, $mm, $i, $yyyy);
$ymd = date("Y/m/d H:i", $ts);
?>
<td><?= $ymd ?></td>
<?php } ?>
<?php } ?>
<?php
if ($ww == 2)
//else
{
for ($i = $wd2 + 1; $i <= min($wd2 + 7,$lastd); $i++)
{
?>
<tr>
<?php
$ts = mktime($hh, $u, 0, $mm, $i, $yyyy);
$ymd = date("Y/m/d H:i", $ts);
?>
<td><?= $ymd ?></td>
<?php } ?>
<?php } ?>
</table>
No.5
- 回答日時:
ちょっと気になったので。
#4さんの関数の中に
StrToTime()
というのがありますが、これはこんな感じですよね。
function StrToTime($date){
list($Y,$m,$d) = sscanf($date, "%d-%d-%d");
$time = mktime(0,0,0,$m,$d,$Y);
return $time;
}
ところで、Get_LastDayはdate関数もっとスマートになります。
function Get_LastDay($date){
$lastdate = date("t",StrToTime($date));
return $lastdate;
}
> naktak様へ
すみません、横やり入れまして。ちょっと気になったもので。。。
この回答への補足
お世話になっております。
皆様のご意見により、
下記のようなスクリプトの形となりました。
が、なぜかif/elseの条件がperse_errorによりなりたちません。
if/ifはうまくいきますが、
if/elseがうまくいかないのです。
どこがいけないのでしょうか?
また、下記スクリプトにて
「ここは変更した方がよい」
という箇所等ございましたら、
あわせてご教授頂きたいと思います。
よろしくお願いします。
<table border="1">
<tr bgcolor="#ffd700">
<td>日付</td>
</tr>
<?php
$yyyy = 2006;
$mm = 8;
$ww = 2;
$wd1 = date("w", mktime(0, 0, 0, $mm, 1, $yyyy));
echo "<p>wd1 ".$wd1;
$wd1 = date("w", mktime(0, 0, 0, $mm, 1, $yyyy));
$wd2 = 7 * $ww - $wd1;
echo "<p>wd2 ".$wd2;
$d = 0;
$lastd = date("d", mktime(0, 0, 0, $mm + 1, 0, $yyyy));
echo "<p>lastd ".$lastd;
if ($ww == 1)
{
for ($i = 1; $i <= $wd2; $i++)
{
?>
<tr>
<?php
$ts = mktime($hh, $u, 0, $mm, $i, $yyyy);
$ymd = date("Y/m/d H:i", $ts);
?>
<td><?= $ymd ?></td>
<?php } ?>
<?php } ?>
<?php
if ($ww == 2)
//else
{
for ($i = $wd2 + 1; $i <= min($wd2 + 7,$lastd); $i++)
{
?>
<tr>
<?php
$ts = mktime($hh, $u, 0, $mm, $i, $yyyy);
$ymd = date("Y/m/d H:i", $ts);
?>
<td><?= $ymd ?></td>
<?php } ?>
<?php } ?>
</table>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 windows11 update の「更新の再開」について初歩的な質問なのですが 1 2022/10/19 00:57
- PHP 文字列を段落で分ける方法を教えて下さい。 2 2023/03/09 10:03
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Excel(エクセル) エクセルの数式で教えてください。 2 2022/12/23 14:57
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- Windows 10 Windows PC 「スタート」の表示 1 2022/05/14 14:27
- その他(ブラウザ) IE・edgeで日増しに観られるサイトが減ってくる。 1 2022/10/04 22:40
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/01/10 09:15
- Ruby VBA 2 2023/01/14 14:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
昨日の日付名でファイルを作成...
-
開始と終了を指定して、その間...
-
日付によって画像を変える
-
時間が経つと表示文字が変わる構文
-
SQL:TIMESTAMPの期間検索を指...
-
C言語でシステム日付との差を...
-
PHPで以下のような占いプログラ...
-
C言語を使って、ある特定の日の...
-
日付型について
-
Dosブロンプトでtabを出力したい
-
Yahoo! JAPAN IDを新規取得でき...
-
DTOとEntityの差は何ですか。
-
shシェルスクリプト 空白行の...
-
switch()文で値の大小比較
-
wordの差し込み印刷で文字...
-
「取得先」という表現について
-
phpでcookieがうまく保存されない
-
SESSION情報は、ブラウザを起動...
-
syntax error, unexpected 'ech...
-
PHP、ヒアドキュメント内でのIF...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
開始と終了を指定して、その間...
-
ファイル名に日付の挿入
-
昨日の日付を取得するVBscript
-
substrの使い方について教えて...
-
一週間の表示の仕方と文字表示
-
PHPで以下のような占いプログラ...
-
C言語を使って、ある特定の日の...
-
アップロードしたファイル名に...
-
PHPでカレンダーを作る(縦書き)
-
プルダウンメニューの値をDBに...
-
第何週かを取得したい
-
日付によって画像を変える
-
差分の月数を算出する方法
-
SQL:TIMESTAMPの期間検索を指...
-
PHP 指定した期間だけ表示した...
-
C言語でシステム日付との差を...
-
プルダウンで今日以降の日付を...
-
Accessコンボボックス
-
MovableTypeで、ある日付を過ぎ...
-
Java Scriptで、ある日付に加算...
おすすめ情報