如果"next day"是周六或周日,我有这个代码来切换到下周一或周二。
但是,如果下周一是三月,脚本返回给我二月而不是三月。
谁能帮我弄清楚哪里出了问题?
// 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;
}
谢谢
您第二次和第三次使用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"));
strtotime中有一些选项可以简化并允许指定一个特殊的间隔,如"next Monday"。
// 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;
你可以使用普通的秒数计算:
<?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;