仕事の都合上、木曜日から始まる週の開始日と終了日を取得する必要がありますが、PHP には今週の開始日と終了日を取得するメソッドが用意されていないため、将来使用できるようにメソッドを書きました。
計算方法:
<?php/** * 计算指定日期的一周开始及结束日期 * @param DateTime $date 日期 * @param Int $start 周几作为一周的开始 1-6为周一~周六,0为周日,默认0 * @retrun Array */function getWeekRange($date, $start=0){ // 将日期转时间戳 $dt = new DateTime($date); $timestamp = $dt->format('U'); // 获取日期是周几 $day = (new DateTime('@'.$timestamp))->format('w'); // 计算开始日期 if($day>=$start){ $startdate_timestamp = mktime(0,0,0,date('m',$timestamp),date('d',$timestamp)-($day-$start),date('Y',$timestamp)); }elseif($day<$start){ $startdate_timestamp = mktime(0,0,0,date('m',$timestamp),date('d',$timestamp)-7+$start-$day,date('Y',$timestamp)); } // 结束日期=开始日期+6 $enddate_timestamp = mktime(0,0,0,date('m',$startdate_timestamp),date('d',$startdate_timestamp)+6,date('Y',$startdate_timestamp)); $startdate = (new DateTime('@'.$startdate_timestamp))->format('Y-m-d'); $enddate = (new DateTime('@'.$enddate_timestamp))->format('Y-m-d'); return array($startdate, $enddate); }?>
例: テストは月曜日から日曜日まで始まり、週の開始時刻と終了時刻が計算されます
<?php$date = '2016-04-27';for($start=0; $start<=6; $start++){ list($startdate, $enddate) = getWeekRange($date, $start); echo 'date:'.$date.' week start:'.$start.' range:'.$startdate.', '.$enddate.'<br>'; }?>
出力:
date:2016-04-27 week start:0 range:2016-04-24, 2016-04-30date:2016-04-27 week start:1 range:2016-04-25, 2016-05-01date:2016-04-27 week start:2 range:2016-04-26, 2016-05-02date:2016-04-27 week start:3 range:2016-04-27, 2016-05-03date:2016-04-27 week start:4 range:2016-04-21, 2016-04-27date:2016-04-27 week start:5 range:2016-04-22, 2016-04-28date:2016-04-27 week start:6 range:2016-04-23, 2016-04-29
この記事では、指定された日付を取得するための php の関連内容について説明します。関連知識については、php 中国語 Web サイトを参照してください。
関連する推奨事項:
PHP が一意の RequestID クラスを生成する方法の詳細な説明
php str_getcsv を使用して文字列を配列に解析する方法の説明
以上が指定した日付を取得するためのphpの内容を説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。