【问题标题】:PHP Date function for current year not working right?本年度的 PHP 日期函数不起作用?
【发布时间】:2012-04-30 21:32:31
【问题描述】:

好的,所以我试图让表单下拉菜单自动选择当前日期,而无需过多的 javascript 编码,所以我得到了下面的代码(它不会自动选择,但它确实包含当前日期作为第一个选项)。这一年并没有像预期的那样首先出现。我对日和月做了同样的事情,这两个工作得很好,但是当我有相同的代码时,除了用天/月代替年(括号内的 mday 和 mon)之外,第一年的选择没有出现。我猜问题出在 [$t['year']] 的两个实例中。其余代码运行良好,但我只是将其包括在内,以防我遗漏了一些内容(我还尝试用最后两个数字替换所有年份,但结果相同)。

<?php
$t = getdate(time()); 
$year = array(1 =>'2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019', '2020', '2021', '2022', '2023', '2024', '2025', '2026', '2027', '2028', '2029', '2030'); 

echo '&nbsp Year <select name="year" >'; 
echo '<option value="\" . $t[\'year\'] . \"">' . $year[$t['year']] . '</option>'; 
foreach( $year as $key => $value ) { 
    echo "<option value = \"$key\">$value</option>"; 
} 
echo '</select>'; ?>

【问题讨论】:

    标签: php date


    【解决方案1】:

    使用date('Y')

    http://php.net/manual/en/function.date.php

    <?php
    $t = getdate(time()); 
    $year = array('2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019', '2020', '2021', '2022', '2023', '2024', '2025', '2026', '2027', '2028', '2029', '2030'); 
    
    echo '&nbsp Year <select name="year" >'."\n"; 
    echo '<option value="' . array_search(date('Y'),$year) . '">' . date('Y') . '</option>'."\n"; 
    foreach( $year as $key => $value ) { 
        echo "<option value = \"$key\">$value</option>\n"; 
    } 
    echo '</select>'."\n";
    
    ?>
    

    http://codepad.org/7h2MnxzC

    这也将只选择select 中的一个值,因此您不需要两个:

    <?php
    $t = getdate(time()); 
    $year = array('2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019', '2020', '2021', '2022', '2023', '2024', '2025', '2026', '2027', '2028', '2029', '2030'); 
    $c_year = date('Y');
    
    echo '&nbsp Year <select name="year" >'."\n"; 
    foreach( $year as $key => $value ) { 
        echo "<option".($c_year == $value?' selected="true"':'')." value = \"$key\">$value</option>\n"; 
    } 
    echo '</select>'."\n";
    
    ?>
    

    http://codepad.org/uGx6zoyn

    【讨论】:

    • 我已经阅读了所有这些内容。它不一定适用于我的情况。我试图让年份相当于'mday'和'mon',这应该是'year'......
    • 查看我的编辑。我不知道你为什么要那样做,但这会奏效。
    • 在花了很多时间验证 OP 想要什么之后,我很遗憾地对此 +1。我厌倦了不断地向人们推荐 php.net 手册! 编辑: 太好了,有东西要补充!
    • 嗯,对不起,我还是个新手。不知道使用array_search。谢谢:)
    • @user987026 - 我添加了第二个可能更好的选项。
    【解决方案2】:
    $years = range(2000, 2030);
    $cur_year = date('Y');
    
    echo '<select name="year">';
    foreach($years as $year)
        if($year == $cur_year)
            echo "<option selected>$year</option>"; 
        else
            echo "<option>$year</option>";
    echo '</select>';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-06
      相关资源
      最近更新 更多