アプリ版:「スタンプのみでお礼する」機能のリリースについて

何度も質問してしまって申し訳ないのですが、、、

年月日から、第何週かを取得したいのですが、どうにもうまく
考えがまとまらず、コーディングが出来ません・・・。

2007/08/1~2007/08/04ならば0か1を、2007/08/26~2007/08/31 ならば4か5を取得したいです。

どなたかご教示下さい!

A 回答 (4件)

難しく考えず、日付を単純に7で割るだけの事じゃないですか?


1日目から第一週になるので、切り上げで。
$w = ceil($day/7);
    • good
    • 0
この回答へのお礼

すみません、0か1、4か5というのは、第1週を0とするか1とするか、
第n週を4とするか5とするか、どちらでも良かったのです。
対象が第何週か分かれば。

皆さんのご回答をアドバイスとし、何とか実現する事が
出来ました。
ありがとうございます。

お礼日時:2007/08/27 22:03

あれ・・よく質問を見ると


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が返るっていうのがなぞですが(^_^;)
    • good
    • 0

その月の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;
    • good
    • 0
この回答へのお礼

すみません、0か1、4か5というのは、第1週を0とするか1とするか、
第n週を4とするか5とするか、どちらでも良かったのです。
対象が第何週か分かれば。

皆さんのご回答をアドバイスとし、何とか実現する事が
出来ました。
ありがとうございます。

お礼日時:2007/08/27 22:03

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年からうるう年がスタートする事を知っていれば、何年何月何日が第何週にあたるかってのはすぐにわかるので。
    • good
    • 0
この回答へのお礼

すみません、0か1、4か5というのは、第1週を0とするか1とするか、
第n週を4とするか5とするか、どちらでも良かったのです。
対象が第何週か分かれば。

皆さんのご回答をアドバイスとし、何とか実現する事が
出来ました。
ありがとうございます。

お礼日時:2007/08/27 22:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!