下个月没有考虑日期

时间:2013-02-26 16:20:34

标签: php

如果“第二天”是周六或周日,我会将此代码切换到下周一或周二。

但是,如果下一个星期一是3月份的剧本,则会在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 个答案:

答案 0 :(得分: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"));

答案 1 :(得分: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;

答案 2 :(得分: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。