2013-02-26 72 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

相关问题