2011-07-27 118 views
3

我知道有類似的帖子關於如何獲得上週四的PHP,但我不想有上個星期四比較當前日期,但上週四比較給定日期。得到在PHP日期的最後一個星期四

例如我有一個日期dd/mm/yyyy,我希望在這個日期之前的星期四。 輸入是我想要解析的字符串(字符串yymmdd的格式),以便在此日期之前獲得星期四。

感謝您的幫助

+0

020512意味着2002年5月12日,我想解析這個字符串以獲取星期四之前,並以相同的格式返回星期四之前的日期(yymmdd) – Othman

+0

@Shef通常在php.ini中處理,並自行解析。 –

+0

@Oto如果傳遞給函數的日期碰巧是星期四,函數是否應該返回一個星期前的同一日期或日期? –

回答

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 ...但要小心'strtotime'在不同版本的PHP中的作用。請務必查看[更新日誌](http://www.php.net/manual/en/function.strtotime-php#refsect1-function.strtotime-changelog)與相關日期相關的問題,並仔細測試是否使用了更多比一個版本的PHP。 – Mike

+0

感謝您的幫助 – Othman

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

如果雙方$yourTime$time是Unix的時間戳。

編輯︰ @ Rudu的解決方法是更簡單,你應該堅持那一個:)!

+0

感謝您的幫助 – Othman

+0

@TvE謝謝!我總是習慣以人工的方式去做(儘管試圖避免使用MOD /%的分支),直到我發現有一些非常方便的內置能力。我想知道這兩種方法在性能上有何不同? – Rudu

+0

我想過使用MOD,因爲它看起來好多了,但我沒有真正弄清楚如何做到這一點。 MOD基本上是x - (floor(x)/ y)* y,但我無法真正弄清楚如何在這個'公式'中放置它。但我很確定MOD確實有更好的表現,但差異不會那麼顯着:)。 – elslooo

相關問題