2013-02-26 85 views
0

如果「第二天」是週六或週日,我有此代碼可切換到下週一或週二。下個月不考慮日期

但是,如果下一個星期一是在3月的腳本回到我2月而不是3月。

任何人都可以幫助我瞭解哪裏出錯?

// OP1 
$option_1 = Date('Y-m-d', strtotime("+1 days")); 
$dd_option_1 = date('l', strtotime($option_1)); 

if ($dd_option_1 == "Saturday") { 
     $option_1 = Date($option_1, strtotime("+2 days")); 
     echo $option_1; 
} 
else if ($dd_option_1 == "Sunday") { 
     $option_1 = Date($option_1 , strtotime("+1 days")); 
     echo $option_1; 
}   
else { 
echo $option_1; 
} 

TKS

回答

3

你的第二個和第三個使用date()無厘頭:

Date($option_1, strtotime("+2 days")); 

option_1是格式化時間字符串,第一個參數應該在您第一次使用指定喜歡的格式date()

如果沒有存儲的日期,但始終使用當前的日期,你可以使用:

$option_1 = Date('Y-m-d', strtotime("+3 days")); 

$option_1 = Date('Y-m-d', strtotime("+2 days")); 
+0

謝謝Jeroen,我現在檢查一下。 – user2112020 2013-02-26 16:32:38

0

有內strtotime可用的選項,以簡化並允許用於指定一個特殊的區間,如「下個星期一」。

// OP1 
$option_1 = Date('Y-m-d', strtotime("+1 days")); 
$dd_option_1 = date('l', strtotime($option_1)); 

if ($dd_option_1 == "Saturday" || $dd_option_1 == "Sunday") { 
    $option_1 = Date($option_1, strtotime("next Monday")); 
} 

echo $option_1; 
0

你可以使用普通的老式秒計算:

<?php 
$tomorrow = time() + 86400; 
$week_day = date('N', $tomorrow); 
$out = null; 

if ($week_day > 5) { 
    $out = date("r", $tomorrow + 86400 * (8 - $week_day)); 
} else { 
    $out = date("r", $tomorrow); 
} 
echo $out; 

簡單而不噸的strtotime的。

+0

更適合strtotime或DateTime – artragis 2013-02-26 17:11:18

相關問題