[PHP-users 17651]Re: 指定日付から週始と週終を得るには?
Hiroyuki Nashida
nashida @ wm.namco.co.jp
2003年 9月 3日 (水) 15:02:32 JST
無田と申します。
function get_week($yyyy, $mm, $dd)
{
$now_date = mktime(0,0,0,$mm,$dd,$yyyy);
$w = (intval(date("w",$now_date)) + 6) % 7;
$this_week[0] = date("Y-m-d",$now_date - 86400 * $w);
$this_week[1] = date("Y-m-d",$now_date + 86400 * (6 - $w));
return $this_week;
}
こんな感じでどうでしょうか。
- Hiroyuki Nashida (e-mail: nashida @ wm.namco.co.jp)
- NAMCO Ltd. Web&Mobile Contents Business Group
- TEL: +81-45-461-8146
- FAX: +81-45-461-8148
----- Original Message -----
From: "aiko" <vvv_aiko_vvv @ hotmail.com>
To: <php-users @ php.gr.jp>
Sent: Wednesday, September 03, 2003 2:18 PM
Subject: [PHP-users 17650] 指定日付から週始と週終を得るには?
> お世話になっております。きしかわです。
>
> サンプルを元に
> 指定日付が、どの週なのか( 週の開始日 月曜日 )を調べる関数を作成しました。
> ただこの関数には問題があって、日曜日を指定した場合、次週になってしまいます。
>
>
> 指定日付 2003.09.07
> <希望結果>
> 週の始 2003.09.01
> 週の終 2003.09.07
>
> <実際>
> 週の始 2003.09.08
> 週の終 2003.09.14
>
> if($day_of_week==0) $day_of_week=6 ;
> の様に分けてみようと思ったりもしましたが、スマートではないし、
> 週の始、週の終はつじつまが合わないし…
>
> どなたか少しアドバイスいただけませんでしょうか。
>
> **************** サンプル ****************
> <?php
> $this_week = array();
> $this_week = get_week(2003, 8, 31);
> print_r($this_week);
>
> function get_week($yyyy, $mm, $dd)
> {
> $now_date = mktime(0, 0, 0, $mm, $dd, $yyyy);
> $day_of_week = 0;
> $day_of_year = 0;
>
> sscanf(strftime("%w %j", $now_date), "%d %3d", &$day_of_week,
> &$day_of_year);
>
> // 日曜(週の始)〜土曜(週の終)の場合
> /*********
> $this_week[0] = strftime("%Y-%m-%d", mktime(0, 0, 0, 1, $day_of_year -
> $day_of_week, $yyyy)); // 週の始
> $this_week[1] = strftime("%Y-%m-%d", mktime(0, 0, 0, 1, $day_of_year +
> (6 - $day_of_week), $yyyy)); // 週の終
>
> // ↓ ↓ ↓
> //
> // 月曜(週の始)〜日曜(週の終)にしたい。
> //
> // ☆☆日曜指定の場合上手く行かない☆☆
> //
> *********/
>
> $sWork=$day_of_week-1 ; // 週始めを月曜日にする。
>
> // 月曜(週の始)〜日曜(週の終)の場合
> $this_week[0] = strftime("%Y-%m-%d", mktime(0, 0, 0, 1, $day_of_year -
> $sWork, $yyyy));
> // 週の始
> $this_week[1] = strftime("%Y-%m-%d", mktime(0, 0, 0, 1, $day_of_year +
> (6 - $sWork), $yyyy)); // 週の終
>
> return $this_week;
> }
>
> ?>
> *******************************************
>
> #ちなみに、get_week(2003, 08, 31);を指定した場合08→0になってしまいます。
> intval()してみても、0??他の方法で数値変換する必要がありますか?
> (便乗質問で申し訳ないです)
>
> きしかわあいこ。
>
> _________________________________________________________________
> 会員登録は無料 充実した出品アイテムなら MSN オークション
> http://auction.msn.co.jp/
>
> _______________________________________________
> PHP-users mailing list
> PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
>
PHP-users メーリングリストの案内