0

如果“第二天”是周六或周日,我有这个代码可以切换到下周一或周二。

但是,如果下周一是三月脚本,请返回二月而不是三月。

谁能帮我理解哪里错了?

    // 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

4

3 回答 3

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"));
于 2013-02-26T16:28:21.853 回答
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。

于 2013-02-26T16:45:23.800 回答
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;
于 2013-02-26T16:32:35.087 回答