如何使用PHP显示未来的月份和日期?

时间:2014-06-20 07:18:30

标签: php codeigniter

我需要添加一个休假列表。它应该只添加2年,所以它应该只显示我所做的2014年和2015年。我的问题是我必须显示月份当他选择2014年它不应该从1月到5月显示,如果他选择2015它应该显示1月到12月。我如何根据年enter image description here填充月份

在图片显示2013年请忽略,因为我的系统显示错误的一年。

这是我的HTML代码

    <table>
          <tr>
            <td colspan="3">Add Leave</td>
          </tr>
            <tr>
             <td width="170" valign="middle" height="40" align="left">Date</td>
             <td width="15" valign="middle" align="left">:</td>

             <td><select id="frm_day" name="frm_day">
             <?php 
                for($i=1;$i<31;$i++)
                {
                  echo "<option value=".$i.">".$i."</option>";
                }
            ?>          </select>
             </td>
              <td>
               <select id="frm_year" name="frm_year">
                        <option value="<?php echo date("Y");?>"><?php echo date("Y");?></option>
                        <option value="<?php echo date("Y")+1;?>"><?php echo date("Y")+1;?></option>
               </select>
             </td>
             <td>
             <select id="frm_month" name="frm_month"> 
               <option value="<?php echo date("m");?>"><?php echo date("M");?></option>
             </select>
                 </td>
           </tr>
          <tr>
           <td colspan="3">
        <input type="submit" name="Submit" id="Submit" value="Submit" class="submit" />
     </td>
  </tr>
</table>

3 个答案:

答案 0 :(得分:0)

您可以从 here

获得最简单的内容

然后你可以使用它:

$timestamp = strtotime("+1 month", yourstartdate);

并使用它

date('Ymd', $timestamp);

你必须绕过未来的那些:

for($i=0;$i < 12; $i++)
{
   $timestamp = strtotime("+".$i." months");
   if(isInFuture($timestamp) && date('m', $timestamp) <= 12) echo date('m', $timestamp);
}

function isInFuture($date, $timestamp = "")
{
   return ($date > date($timestamp));
}

答案 1 :(得分:0)

<body>

的末尾添加此内容
<script type="text/javascript">
    var currentMonth = <?php date('m'); ?>;
    var currentYear = <?php date('Y'); ?>;
    var fullList = document.getElementById('frm_month').innerHTML;

    function changedYear(obj) {
        var selectedYear = obj.value,
            node;

        if (selectedYear == currentYear) {
            for (var i = 1; i < currentMonth; i++) {
                node = document.querySelector('#frm_month option[value='+i+']');
                node.parentNode.removeChild(node);
            }
        } else {
            document.getElementById('frm_month').innerHTML = fullList;
        }
    }
</script>

并改变:

<select id="frm_year" name="frm_year">

<select id="frm_year" name="frm_year" onchange="changedYear(this)">

如果用户选择它,将删除当前年份中的月份。在任何其他年份,完整列表将被恢复。

答案 2 :(得分:0)

我强烈建议在这个上使用一个日期选择器。一个流行的日期选择器是jquery UI datepicker.以下是您要实现的目标示例:

Sample Demo

这包括2年的上限。

<link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css" />
<form method="POST" action="">
    <table border="0" cellpadding="10">
        <tr>
            <th width="100" align="left">Date</th>
            <td><input type="text" name="frm_day" id="frm_day" size="1" readonly></td>
            <td><input type="text" name="frm_year" id="frm_year" size="5" readonly></td>
            <td><input type="text" name="frm_month" id="frm_month" size="3" readonly></td>
            <td><img src="http://jqueryui.com/resources/demos/datepicker/images/calendar.gif" id="datepickerImage" style="cursor: pointer;" /></td>
        </tr>
    </table>
</form>

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
<script type="text/javascript">
$(document).ready(function(){

    $('#datepickerImage').on('click', function(){
        $("#frm_day").datepicker('show');
    });
    $('#frm_day, #frm_month, #frm_year').datepicker({
        minDate: 0,
        maxDate: '+2Y',
        changeMonth: true,
        changeYear: true,
        dateFormat: 'd/yy/M',
        onClose: function(dateText){
            $(this).val('');
            $('#frm_day').val(dateText.split('/')[0]);
            $('#frm_month').val( dateText.split('/')[2]);
            $('#frm_year').val( dateText.split('/')[1]);
        }
    });

});
</script> 
  

有关详细信息,请访问docs。所有设置都可以在那里找到。