[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 メーリングリストの案内