You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何保留原字符串值,获取所选年份2月最后一个周六?

解决PHP中保留原始日期值并计算指定年份2月最后一个周六的问题

你的核心问题是复用了同一个变量$valdatum——既用来存储用户输入的原始日期字符串,又用来存储DateTime对象,导致原始值被覆盖。只需要用新变量处理日期计算,同时基于用户选择的年份来计算目标日期即可。

修改后的代码如下:

<?php
// 初始化默认值,匹配input type="date"的返回格式(Y-m-d)
$valdatum = date("Y-m-d");

if(isset($_POST["valdatum"])) {
    $valdatum = filter_input(INPUT_POST, 'valdatum', FILTER_SANITIZE_SPECIAL_CHARS);
}
?>
<!DOCTYPE html>
<html lang="sv">
    <head>
        <title>Tjejvasan</title>
        <meta charset="utf-8">
    </head>
    <body>
        <form method="POST">
            <input type="date" name="valdatum" value="<?= $valdatum;?>">
            <input type="submit" value="Skicka">
        </form>
    <?php
    // 输出用户选择的原始日期值
    echo "你选择的日期:" . $valdatum;
    echo "<br>";

    // 从原始日期中提取年份,确保计算的是所选年份的2月
    $selectedYear = date('Y', strtotime($valdatum));
    // 使用新变量存储DateTime对象,避免覆盖原始值
    $targetDate = new DateTime("$selectedYear-02-01");
    $targetDate->modify('last saturday of february');
    $lastSaturday = $targetDate->format('Y-m-d');

    echo "该年份2月最后一个周六:" . $lastSaturday;
    ?>
    </body>
</html>

关键改动说明:

  • 初始化$valdatum时使用Y-m-d格式,和input控件的返回格式一致,避免格式不匹配
  • 创建新变量$targetDate处理日期计算,彻底避免覆盖原始的用户输入值
  • 从用户选择的日期中提取年份,确保计算的是用户所选年份的2月最后一个周六(而非默认当前年份)

内容的提问来源于stack exchange,提问作者Tas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 18:40:45