2011-07-27 21 views
3

PHPで最後の木曜日の取得方法に関する同様のポストがあることを知っていますが、最後の木曜日を現在の日付と比較したいとは思っていませんが、与えられた日付。PHPの日付の前に最後の木曜日を取得

たとえば、私は日付がdd/mm/yyyyであり、この日付より前に木曜日を希望します。 入力は、この日付より前に木曜日を取得するために解析したい文字列(文字列yymmddの形式)です。あなたの助け$yourTime$time両方がUnix系のタイムスタンプです

+0

020512を意味する2002年5月12日木曜日の前に木曜日を取得し、同じフォーマット(yymmdd)の日付を返すようにこの文字列を解析したい – Othman

+0

@Shefこれは通常php.iniで処理され、 。 –

+0

@Oto関数に渡された日付が木曜日の場合はどうなりますか?関数は同じ日付または1週間前の日付を返しますか? –

答えて

8
//Assumes it's strtotime parsable, you may need to insert 
// slashes with your given format eg (and use 4 digit years) 
$given=strtotime($dtstring); 

//It's just that easy ;) 
$thuBefore=strtotime("last thursday",$given); 

これは常に与えられた日が木曜日であれば、それは7日前に報告します(しかし、日が金曜日の場合、それは一日だけ早く報告します)を意味し、最後木曜日を取得することに注意してください。

+0

+1 ...しかし、異なるバージョンのPHPで 'strtotime'が動作する方法には注意してください。相対日付に関する問題については、[Changelog](http://www.php.net/manual/en/function.strtotime.php#refsect1-function.strtotime-changelog)をチェックしてください。 PHPの1つのバージョンよりも – Mike

+0

あなたの助けをありがとう – Othman

3
$day = date('w', $yourTime); 
$time = $yourTime - ($day > 4 ? ($day - 4) : ($day + 7 - 4)) * 3600 * 24; 

ため

感謝。

編集: @ルーヅの解決策はもっと簡単です、あなたはそれに固執すべきです:)!

+0

あなたの助けをありがとう – Othman

+0

@TvEありがとう!私はいつも手作業で行っていましたが(MOD /%でブランチを避けようと試みていましたが)、非常に便利な機能がいくつかあることがわかりました。私は2つのアプローチがどのようにパフォーマンスを比較しているのだろうか? – Rudu

+0

私はMODを使うことを考えました。なぜなら、それははるかに良く見えるからです。しかし、それをどうやって行うのか本当に分かりませんでした。 MODは基本的にx - (floor(x)/ y)* yですが、この 'formula'にどのように配置するのかは実際には分かりません。しかし、私はかなりMODがより良いパフォーマンスを持っていると確信していますが、違いはそれほど重要ではありません:)。 – elslooo

関連する問題