【问题标题】:Automatically set date input date自动设置日期输入日期
【发布时间】:2021-03-05 14:44:04
【问题描述】:

所以我有一个日期输入,它会自动设置 8 天后的日期,如下所示:

<input type="date" name="pdate" value="<?php echo date("Y-m-d", time() + 691200); ?>" required>

所以现在这将显示03/13/2021作为日期,但是是否可以跳过星期六和星期日,所以如果8天内的日期是星期六或星期日,它会在插入后自动将日期设置为Money?

【问题讨论】:

  • 我建议您创建一个 javascript 或 php 函数,该函数将被调用并检查它是周六还是周日,如果是,则将日期设置为下周一
  • this question。有多种方法,但最好的方法是(此时)隐藏在 comment 中。
  • 首先,2021 年 3 月 13 日的答案是否正确,或者您打算将输出设为 2021 年 3 月 17 日 .. 未来 8 个工作日?其次,您担心未来 8 天到达的那一天,因此需要将 2021 年 3 月 13 日移至 2021 年 3 月 15 日
  • @RyanH 我希望日期输入中的值显示未来 8 天的日期,但是 - 如果未来 8 天是星期六或星期日,我希望它自动选择星期一改为之后。如果未来的 8 天是工作日,例如星期三,则应该保持这样。
  • 您是否尝试过搜索您需要的功能?喜欢checking if a date is weekend?有了relative formats,下周一就可以轻松获取了。

标签: php html


【解决方案1】:

是的,您可以在 PHP 中使用 DateTime

如下图

new \DateTime('+8 weekdays');

【讨论】:

    【解决方案2】:
    <?php
    
    $date = new \DateTime('+8 days');
    $date = shiftDate($date);
    function shiftDate($date){
        if (in_array((int)$date->format('N'), [6,7])){
            $date->add(new \DateInterval('P1D'));
            $date = shiftDate($date);
        }
        return $date;
    }
    var_dump($date);
    

    工作代码在这里https://3v4l.org/vmomV

    【讨论】:

    • 不错!但是为什么value="&lt;?php echo $date ?&gt;" 不给我日期输入中的日期值呢?
    • 抱歉,您需要使用$date-&gt;format("Y-m-d")
    • 关于日期时间对象php.net/manual/en/class.datetime.php的文档
    • 如果日期是周末,您可以简单地执行-&gt;modify('next monday'),而不是递归调用您的函数。
    • @El_Vanja 是的,我有一个更复杂的版本,它也跳过了银行假期和公司假期,所以在我的原始版本中,递归更合适,因为理论上它可以转移到一周中的任何一天。很高兴它对你有用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多