スレッド表示 | フラット表示〕 全トピック 920 件中 665 番目 次≫ ≪前

教えてください

created: 2004-03-08 21:00 | modified: 2004-03-10 00:53 | reply: 3

[1373] 教えてください

user: だいご | created: 2004-03-08 21:00
期間計算をしたいのですが、方法がわかりません。
例として3月8日から土日を除く10日後を出力させたいのです。
解る方がいましたら教えてください。
reply: 1374 返信 編集 削除

[1374] Re.教えてください

user: hamaji | created: 2004-03-09 00:38
だいごさん、ゆうじさんこんばんは。
最近超多忙につきなかなかのぞきにくる暇がありませんでした。

> 期間計算をしたいのですが、方法がわかりません。
> 例として3月8日から土日を除く10日後を出力させたいのです。
> 解る方がいましたら教えてください。
日付の計算にはmktime()を使うと良いです。
月や年をまたがっても大丈夫ですから。

さて、細かい仕様がわかりませんが、
こんな感じでしょうか?
与えられた日付から土日を除く10日分(当日含む)の日付を格納した配列をを返します。
<?php
// 10日分の日付を配列に格納して返す関数。
function after_10day($year, $month, $date) {
$result = array(); // 戻り値
$week = array("日", "月", "火", "水", "木", "金", "土");
// mktime()用に整数値に変換。
// それと引数の月、日がゼロあり・なしどちらでも対応できるように。
settype($year, "integer");
settype($month, "integer");
settype($date, "integer");
// タイムスタンプを求める。(月や年をまたいでも大丈夫)
$todaytime = mktime(0, 0, 0, $month, $date, $year);
$count = 0; // ループカウンタ
while (count($result) < 10) {
$weekday = ""; // 曜日を格納する変数
$time = $todaytime + $count * 86400;
$day = date("w", $time); // 曜日を求める
// 土日でなければ配列に格納
if( !($day == 6 || $day == 0) ) {
$dates = date("Y-m-d", $time);
// わかりやすく曜日を日本語で取得します。
foreach($week as $key => $value) {
if ($key == $day) {
$weekday = $value;
}
}
array_push($result, $dates . "(" . $weekday . ")");
}
$count++;
}
return $result;
}

$ten_days = after_10day(2004, 03, 8);

echo "<pre>\n";
print_r($ten_days);
echo "</pre>\n";
?>
ただしこの関数に土日の日付を与えないことが前提です。
(その辺だいごさんがどうしたいのかまったくわからないので)
参考までに。
Parent: 1373  reply: 1377 返信 編集 削除

[1377] 詳しくしてみました!!

user: だいご | created: 2004-03-09 01:53
返答頂いてありがとうございました。
土日祝祭日を除いた期間の計算方法が知りたいのです。
例えば、今年のカレンダーで考えると、3月9日から土日祝祭日を除く10日後を
計算する方法が知りたいのです。
3月23日を表示させたいのです。

開始日は不特定で、結果が土日祝祭日を除く10日後を表示さたいのです。

phpとmysqlの初心者です。
返答お願いします!!
Parent: 1374  reply: 1383 返信 編集 削除

[1383] 詳しくしてみました!!じゃなくて

user: hamaji | created: 2004-03-10 00:53
詳しくしたからどうということではありません。
この文章からは自分自身でなんとか解決しようという努力の姿勢がまったく感じられません。
わからないなりにも自分自身で考える癖を身につけたほうが良いと思いますよ。

> 土日祝祭日を除いた期間の計算方法が知りたいのです。
いや、だから参考に書いたソースを見てもらえればヒントはつかめるかと。

> 例えば、今年のカレンダーで考えると、3月9日から土日祝祭日を除く10日後を
> 計算する方法が知りたいのです。
> 3月23日を表示させたいのです。
なにも計算で求めなくてもいいじゃないですか。
というか、単純に土日祝日といっても計算して求められますか?
(ハッピーマンデー、振替休日、天皇誕生日等々)
PHPに限らず、これらを計算で求めるなんてとてもじゃないですが、私には無理です。

だから計算とかロジックとかというところを頭から切り離して、ゆっくり考えてみてください。

mysqlを使っているんですから、年間休日テーブルのようなものを用意して、前回私が書いたソースを多少いじれば十分実現できると思います。

それでもわからないというなら、いきなり難しいことをせずにもっと基本的なこと(MySQLや、
日付時刻関数のことetc...)からゆっくりやっていけばいいと思います。

ちょっときつい言い方かもしれませんが、
あせる必要はないと思いますのでがんばってください。
Parent: 1377  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 665 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑