2011-02-16 52 views
0

我試圖從指定的日期找到第一個工作日,但我沒有想出任何解決方案,但我在想,你可以做類似strtotime(「 - x days」,$ time )PHP獲得第一個工作日

剛纔我用這個方法來計算有多少天回去,但我想知道,這是否可以以任何方式

if ($i == 0) 
    return 6; 
else 
    return $i-1; 

其中$ i是數字表示進行優化(與PHP的日期('w'相同))

我還需要查找一週的最後一天,但我認爲,你可以做

strtotime('+'.date('w', $dateTo).'days', $dateTo); 
+0

「1st weekday」是什麼意思? – drudge 2011-02-16 19:10:45

+0

澄清,這是一個有效的用例嗎?你輸入2月20日(星期日),並返回第21(星期一)。如果輸入2月16日(Wednsday),則返回2月16日。 – Jonah 2011-02-16 19:11:41

回答

2

這就是所有的相對日期數學。如果你有一個合適的PHP時間戳,那麼它只是一個簡單的整數。 date('w')是提取從時間戳的某一天的周值的正確方法,但其餘的可以用常規的數學運算來完成:

$today = date('w', $dateTo); 
$last_sunday = $dateTo - (86400 * $today); // same time on previous sunday 
$last_day_of_week = $dateTo + (86400 * (6 % $today)); 

這是通過strtotime()round-tripping一切更快,招致日期字符串解析處罰。

2

嘗試使用strtotime()relative format。類似這樣的應該工作: strtotime('monday', $relativeTime);爲第一個工作日和strtotime('friday', $relativeTime);爲最後一個工作日。