如果“第二天”是周六或周日,我会将此代码切换到下周一或周二。
但是,如果下一个星期一是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
答案 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。