1600年から2017年までの間で、いつが「うるう年」かと、「その年の”3月の最初の月曜日”は何日か」を表示するプログラムを書きたいのですが、どのように書けばいいかがわかりません。
以下①と②のソースコードがまず正しいのか、またそれらをどう組み合わせればいいのか教えていただけないでしょうか。
①1600年から2017年の間の閏年を抽出
<?php $array = range (1600, 2017); foreach ($array as $year) { if ($year % 4 == 0 && $year % 100 != 0 || $year % 400 == 0) { echo $year; } ?>
②曜日を抽出
<?php $week = ['日','月','火','水','木','金','土']; $date = date('w'); echo $week[$date].'曜日'; ?>
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
strtotimeをつかいました。
php
1for ($year=1600; $year<=2017; $year++){ 2 if ($year % 4 == 0 && $year % 100 != 0 || $year % 400 == 0) { 3 echo date("Y/m/d",strtotime("next Monday",strtotime($year."0229"))), "\n"; 4 } 5}
投稿2017/08/25 16:30
総合スコア4070
0
ベストアンサー
php
1$first_monday = date("j", strtotime("first Monday of March 2017")); 2echo $first_monday; // 6
追記
(1)は}
が足りない。
php
1$array = range (1600, 2017); 2foreach ($array as $year) { 3 if ($year % 4 == 0 && $year % 100 != 0 || $year % 400 == 0) { 4 echo $year.": "; 5 $first_monday = date("j", strtotime("first Monday of March $year")); 6 echo $first_monday."\n"; 7 } 8}
うるう年の判定法を知ることは、他言語で応用ができるので、良い。
PHP
ではcheckdate
も利用できる。
PHP: checkdate - Manual
追記2
DateTime
使えという天の声が聞こえたので。
php
1$array = range (1600, 2017); 2foreach ($array as $year) { 3 $first_monday = new DateTime("first Monday of March $year"); 4 if ($first_monday->format('L') === '1') { 5 echo $first_monday->format('Y-m-d') . "\n"; 6 } 7} 8
投稿2017/08/25 16:14
編集2017/08/26 09:11総合スコア1698
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/26 13:09
0
やってみました。
シンプル版
php
1<?php 2for ($year=1600; $year<=2017; $year+=4){ 3 if ($year % 100 !== 0 || $year % 400 === 0) { 4 echo date("Y/m/d",strtotime("next Monday",strtotime($year.'0229'))), "\n"; 5 } 6}
力技版
php
1<?php 2for ($year=1600; $year<=2017; ++$year){ 3 $date = strtotime("next Monday",strtotime($year.'0229')); 4 if (date('L',$date)==='1') { 5 echo date("Y/m/d",$date), "\n"; 6 } 7}
A.Ichi さんの 2/29 の次の月曜日って、面白い読み替えですね。
投稿2017/08/26 08:38
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
別回答に書かれてますように、うるう年の調べ方は問題ないです。
きっと問題は、この年の3月1日が何曜日なのかということでしょうが、
PHPには
http://php.net/manual/ja/datetime.construct.php
こういうのがありまして、何かしたら3月1日のデータ作れそうですね。
そして、
http://php.net/manual/ja/datetime.format.php
で'w'が使えるので・・・
って言う感じです。
投稿2017/08/25 16:10
総合スコア5545
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
閏年は問題ないようなので、3月の最初の月曜日について。
3月の最初の月曜日とは、
「3月1日から数えて最初の月曜日」のことですね。
ということは、
「3月1日は何曜日か?」
が分かれば、月曜日は何日後か分かりますね。
投稿2017/08/25 15:49
総合スコア13703
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/26 04:25 編集
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/26 13:06