[請益] 請問我現在要抓每個月份的星期一?!

看板PHP作者 (oujiyo)時間9年前 (2015/01/05 16:41), 9年前編輯推噓4(405)
留言9則, 5人參與, 最新討論串1/1
不好意思,請問各位大大們,假如我要抓取每個月的星期一我設定我要從2015-01-01號 開始抓星期一是幾月幾號,但現在碰到一個問題是,我用for迴圈去跑,如果是在同個月 我抓一月的每個星期一,能夠跑出數據來,但現在面臨到,如果我跳月份,就會無法跑出 數據或者只跑幾筆,目前發先應該是在於程式碼天數上設定的問題,能有勞請各位大大, 幫幫小弟我嗎?! ex: 如果我要找出2015-01-01~2015-02-05 之間的每個星期一的話。 附上程式碼: $date_time="2015-01-01"; list($date)=explode(" ", $date_time); //取出日期部份 list($y,$M,$D)=explode("-",$date); //分離出年月日以便製作時戳 $M1 = $M; $D1 = $D; $date_time="2015-02-05"; list($date)=explode(" ", $date_time); //取出日期部份 list($Y,$M,$D)=explode("-",$date); //分離出年月日以便製作時戳 $M2 = $M; $D2= $D; echo $week; for($m=$M1;$m<=$M2;$m++){ for($d=$D1;$d<=54;$d++){ if(date("w",mktime(0,0,0,$m,$d,$y))=="1") //代表星期幾 echo $ymd ="$y-$m-$d"."&nbsp;&nbsp;"; } } 跪求各位大大幫解惑。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 120.107.58.243 ※ 文章網址: http://www.ptt.cc/bbs/PHP/M.1420447283.A.B27.html

01/05 17:00, , 1F
01/05 17:00, 1F

01/05 17:49, , 2F
同樓上,我也玩了一下。
01/05 17:49, 2F

01/05 19:13, , 3F
找出第一個週一的unix timestamp, 一直加 86400*7 就好了
01/05 19:13, 3F

01/05 21:18, , 4F
有想到,就想說強調一下 strtotime() 的用法 XD
01/05 21:18, 4F
感謝各位大大的解惑,非常感謝!!! ※ 編輯: ben0065 (120.107.58.243), 01/06/2015 08:52:47

01/06 09:19, , 5F
可以使用DateTime Object 的 modify在計算上比較方便
01/06 09:19, 5F

01/06 09:22, , 6F
$d = new DateTime('2015-01-01');
01/06 09:22, 6F

01/06 09:22, , 7F
echo $d->modify('+1 week')->format('Y-m-d');
01/06 09:22, 7F

01/06 09:23, , 8F
特別是遇到跨年或是跨月天數不固定時就很好用了。
01/06 09:23, 8F

01/06 09:47, , 9F
DateTime卡方便。
01/06 09:47, 9F
文章代碼(AID): #1Kgaupid (PHP)