- ベストアンサー
第何週かを取得したい
何度も質問してしまって申し訳ないのですが、、、 年月日から、第何週かを取得したいのですが、どうにもうまく 考えがまとまらず、コーディングが出来ません・・・。 2007/08/1~2007/08/04ならば0か1を、2007/08/26~2007/08/31 ならば4か5を取得したいです。 どなたかご教示下さい!
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
難しく考えず、日付を単純に7で割るだけの事じゃないですか? 1日目から第一週になるので、切り上げで。 $w = ceil($day/7);
その他の回答 (3)
- PED02744
- ベストアンサー率40% (157/390)
あれ・・よく質問を見ると 26~31は4か5が返るとかかれてますね。 だったら、Ano.1さんのいうように、素直に計算した答えになるような気がしてきました(笑) (26-1)/7 + 1 = 4 (27-1)/7 + 1 = 4 (28-1)/7 + 1 = 4 (29-1)/7 + 1 = 5 (30-1)/7 + 1 = 5 (31-1)/7 + 1 = 5 ただ、1~4の時、0か1が返るっていうのがなぞですが(^_^;)
- php504
- ベストアンサー率42% (926/2160)
その月の1日の曜日を求め(日曜日0-土曜日6)日にちに加算 1を引いて7で割ると第何週かわかります。 <?php $year = 2007; $month = 8; $day = 27; $time = mktime(0, 0, 0, $month, 1, $year); $wday = date("w", $time); $val = (int)(($day + $wday - 1) / 7); echo $val;
お礼
すみません、0か1、4か5というのは、第1週を0とするか1とするか、 第n週を4とするか5とするか、どちらでも良かったのです。 対象が第何週か分かれば。 皆さんのご回答をアドバイスとし、何とか実現する事が 出来ました。 ありがとうございます。
- PED02744
- ベストアンサー率40% (157/390)
2007年1月1日が月曜日なので、ここからの積算日数を求めて7で割って あげれば第何週かでてきますね。 例1)1月20日の場合、 1月0日からの経過日数は20日 (20/7)+1=3週目 例2)1月21日の場合、 1月0日からの経過日数は21日 (21/7)+1=4週目 例3)2月10日の場合、 (1)2月1日の通算週数を求める 1月0日からの経過日数は32日 (32/7)+1=5週目 (2)2月10日の通算週数を求める 1月0日からの経過日数は41日 (41/7)+1=6週目 ∴2月10日は(6-5)+1=2 2月第2週 もっと簡単にできるとおもうんですが、このように累積して計算するのが基本です。 これをつかえば、西暦1年1月1日が日曜日で西暦8年からうるう年がスタートする事を知っていれば、何年何月何日が第何週にあたるかってのはすぐにわかるので。
お礼
すみません、0か1、4か5というのは、第1週を0とするか1とするか、 第n週を4とするか5とするか、どちらでも良かったのです。 対象が第何週か分かれば。 皆さんのご回答をアドバイスとし、何とか実現する事が 出来ました。 ありがとうございます。
お礼
すみません、0か1、4か5というのは、第1週を0とするか1とするか、 第n週を4とするか5とするか、どちらでも良かったのです。 対象が第何週か分かれば。 皆さんのご回答をアドバイスとし、何とか実現する事が 出来ました。 ありがとうございます。