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

如何用PHP根据所选年月获取当月所有日期及星期名称

解决方案

首先需要调整你的表单,给月份选择器的每个选项加上对应的数字value,这样PHP能直接获取到月份编号,避免额外处理土耳其语名称的映射:

<form method="post" action="action_page.php">
    <select name="month">
        <option value="1">Ocak</option>
        <option value="2">Şubat</option>
        <option value="3">Mart</option>
        <option value="4">Nisan</option>
        <option value="5">Mayıs</option>
        <option value="6">Haziran</option>
        <option value="7">Temmuz</option> <!-- 原表单遗漏的7月,已补充 -->
        <option value="8">Ağustos</option>
        <option value="9">Eylül</option>
        <option value="10">Ekim</option>
        <option value="11">Kasım</option>
        <option value="12">Aralık</option>
    </select>
    <select name="year">
        <option>2000</option>
        <option>2001</option>
        <option>2002</option>
        <option>2003</option>
        <option>2004</option>
        <option>2005</option>
        <option>2006</option>
        <option>2007</option>
        <option>2008</option>
        <option>2009</option>
        <option>2010</option> <!-- 原表单遗漏的2010年,已补充 -->
        <option>2011</option>
        <option>2012</option>
        <option>2013</option>
        <option>2014</option>
        <option>2015</option>
        <option>2016</option>
        <option>2017</option>
        <option>2018</option>
        <option>2019</option>
        <option>2020</option>
        <option>2021</option>
        <option>2022</option>
    </select>
    <input type="submit" name="submit">
</form>

然后在action_page.php中编写PHP代码,处理表单提交并生成当月的日期和对应星期:

<?php
// 检查表单是否提交
if (isset($_POST['submit']) && isset($_POST['month'], $_POST['year'])) {
    // 获取并过滤输入为整数
    $month = (int)$_POST['month'];
    $year = (int)$_POST['year'];

    // 验证输入有效性
    if ($month < 1 || $month > 12 || $year < 2000 || $year > 2022) {
        echo "请选择有效的年月";
        exit;
    }

    // 设置土耳其语本地化,确保星期名称为土耳其语
    setlocale(LC_TIME, 'tr_TR.utf8');
    // 若服务器不支持tr_TR,可尝试备选:setlocale(LC_TIME, 'turkish');

    // 生成当月第一天的DateTime对象
    $firstDay = new DateTime("$year-$month-01");
    // 获取当月最后一天
    $lastDay = (clone $firstDay)->modify('last day of this month');

    // 输出标题
    echo "<h3>{$firstDay->format('F Y')} 的日期和星期</h3>";
    echo "<ul>";

    // 循环遍历当月每一天
    while ($firstDay <= $lastDay) {
        $date = $firstDay->format('d.m.Y'); // 格式化为日.月.年
        $weekday = strftime('%A', $firstDay->getTimestamp()); // 获取土耳其语完整星期名
        echo "<li>$date - $weekday</li>";
        // 日期加一天
        $firstDay->modify('+1 day');
    }

    echo "</ul>";
} else {
    echo "请选择年月并提交表单";
}
?>

补充说明

如果服务器不支持setlocale,可以用IntlDateFormatter替代获取土耳其语星期名:

$formatter = new IntlDateFormatter(
    'tr_TR',
    IntlDateFormatter::FULL,
    IntlDateFormatter::NONE
);
$weekday = $formatter->format($firstDay);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 16:40:22