Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取日期、分解、使用数据选择<;选择>;_Php_Date_Options_Html Select - Fatal编程技术网

Php 获取日期、分解、使用数据选择<;选择>;

Php 获取日期、分解、使用数据选择<;选择>;,php,date,options,html-select,Php,Date,Options,Html Select,我设置了三个变量,$date\u readable(格式为F jS,Y,即2011年1月1日),$date\u timestamp(自解释)和$date\u normal(格式为YYYY-MM-DD) 我选择了三个字段: <select name="date_mo"> <option value="01">January</option> <option value="02">February</opt

我设置了三个变量,
$date\u readable
(格式为
F jS,Y
,即2011年1月1日),
$date\u timestamp
(自解释)和
$date\u normal
(格式为YYYY-MM-DD)

我选择了三个字段:

    <select name="date_mo">
        <option value="01">January</option>
        <option value="02">February</option>
        <option value="03">March</option>
        <option value="04">April</option>
        <option value="05">May</option>
        <option value="06">June</option>
        <option value="07">July</option>
        <option value="08">August</option>
        <option value="09">September</option>
        <option value="10">October</option>
        <option value="11">November</option>
        <option value="12">December</option>
    </select>
    <select name="date_dy">
        <option value="01">1</option>
        <option value="02">2</option>
        <option value="03">3</option>
        <option value="04">4</option>
        <option value="05">5</option>
        <option value="06">6</option>
        <option value="07">7</option>
        <option value="08">8</option>
        <option value="09">9</option>
        <option value="10">10</option>
        <option value="11">11</option>
        <option value="12">12</option>
        <option value="13">13</option>
        <option value="14">14</option>
        <option value="15">15</option>
        <option value="16">16</option>
        <option value="17">17</option>
        <option value="18">18</option>
        <option value="19">19</option>
        <option value="20">20</option>
        <option value="21">21</option>
        <option value="22">22</option>
        <option value="23">23</option>
        <option value="24">24</option>
        <option value="25">25</option>
        <option value="26">26</option>
        <option value="27">27</option>
        <option value="28">28</option>
        <option value="29">29</option>
        <option value="30">30</option>
        <option value="31">31</option>
    </select>
    <select name="date_yr">
        <?php for($year=$curryear;$year<$curryear+51;$year++){ ?>
            <option value="<?php echo $year; ?>"><?php echo $year; ?></option>
        <?php } ?>
    </select>

一月
二月
前进
四月
也许
六月
七月
八月
九月
十月
十一月
十二月
1.
2.
3.
4.
5.
6.
7.
8.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

如果我正确理解了您的问题,那么您有一个时间戳,您需要在呈现页面时使用该时间戳来选择适当的选择选项

作为预警-这将使选择无效日期成为可能,例如2月31日(不存在)。当使用JavaScript更改月份时,您可能需要考虑重新绘制年份下拉。由于您没有指定任何javascript库(并且不清楚无效日期的可能性有多重要),因此我不想冒险展示这方面的代码,但这并不十分困难

// using the current time for the sake of the example, your timestamp would take the place of this
$timestamp = time();

// determine the selected month, day, and year
$selected_month = date('n', $timestamp);
$selected_day = date('j', $timestamp);
$selected_year = date('Y', $timestamp);

// now, create the drop-down for months
$month_html = '<select name="date_mo">';
for ($x = 1; $x < 13; $x++) {
    $month_html .= '<option value='.$x.($selected_month == $x ? ' selected=true' : '' ).'>'.date("F", mktime(0, 0, 0, $x, 1, $selected_year)).'</option>';
}
$month_html .= '</select>';
// output
print $month_html;


// create the day drop-down
$day_html = '<select name="date_day">';
for ($x = 1; $x < 32; $x++) {
    $day_html .= '<option value='.$x.($selected_day == $x ? ' selected=true' : '' ).'>'.$x.'</option>';
}   
$day_html .= '</select>';
// output
print $day_html;


// create the year drop-down
$year_html = '<select name="date_year">';
$start_year = date('Y', time());
$max_year = $start_year + 51;
for ($x = $start_year; $x < $max_year; $x++) {
    $year_html .= '<option value='.$x.($selected_year == $x ? ' selected=true' : '' ).'>'.$x.'</option>';
}   
$year_html .= '</select>';
// output
print $year_html;
//使用当前时间出于示例的考虑,您的时间戳将取代此时间戳
$timestamp=time();
//确定所选的月、日和年
$selected_month=日期('n',$timestamp);
$selected_day=日期('j',$timestamp);
$selected_year=日期('Y',$timestamp);
//现在,创建几个月的下拉列表
$month_html='';
对于($x=1;$x<13;$x++){
$month_html.=''.date(“F”,mktime(0,0,0,$x,1,$selected_year))。';
}
$month_html.='';
//输出
打印$month\u html;
//创建日期下拉列表
$day_html='';
对于($x=1;$x<32;$x++){
$day_html.='.$x.';
}   
$day_html.='';
//输出
打印$day_html;
//创建年份下拉列表
$year_html='';
$start_year=日期('Y',时间());
$max_year=$start_year+51;
对于($x=$start\u year;$x<$max\u year;$x++){
$year_html.=''.$x.';
}   
$year_html.='';
//输出
打印$year\u html;
输出:

编辑
如果源数据的格式为
YYYY-MM-DD
。为了将其转换为时间戳,从而使用我发布的示例代码,需要对格式化的日期值调用
strotime
。因此,上面代码中唯一需要更改的行是
$timestamp=strotime(_格式化的_日期)

我个人会将这3个字段转换为更方便用户的日期选择器(例如使用),但要在打开页面时选择正确的选项,需要在每个选项中添加一个复选框

年度示例:

  <?php
      $selected_year = date("Y", $date_timestamp);      // get the selected year
      for($year=$curryear;$year<$curryear+51;$year++)
      {
  ?>
        <option value="<?php echo $year; ?>" <?php echo ($selected_year == $year) ? 'selected' : ''; ?>><?php echo $year; ?></option>
  <?php
      }
  ?>

>

我几乎明白了,但你应该再解释一下。肯定会帮你得到更好的答案。编辑我的答案以解决更新。。。我想……)考虑<代码> <代码>,让浏览器垫片处理它。@马里奥,虽然站点有HTML5 DOCTYPE,但对于使用Internet Explorer/IE兼容性的人来说,站点更为合适。我宁愿花更少的时间使用一些可以正常工作的东西,也不愿意为了让IE正常工作而与额外的脚本构建兼容性。然而,
现在肯定被标记下来供以后使用!谢谢您的答案既深入又完美地满足了我的需要(在编辑之前我自己创建了一个UNIX时间戳)。因此,你得到了最好的答案。太感谢你了!
<?php
    // $months = array(1 => 'January', 2 => 'February', ... etc
?>
<select name="date_mo">
<? for ($i = 1, $current = (int) date('n'); $i <= 12; $i++) { ?>
    <option value="<?=$i;?>"<?=($current === $i ? ' selected="selected"' : NULL);?>><?=$months[$i];?></option>
<? } ?>
</select>
<select name="date_dy">
<? for ($i = 1, $current = (int) date('j'); $i <= 31; $i++) { ?>
    <option value="<?=$i;?>"<?=($current === $i ? ' selected="selected"' : NULL);?>><?=$i;?></option>
<? } ?>
<select name="date_yr">
<? for ($i = $current = (int) date('Y'), $until = $i + 50; $i <= $until; $i++) { ?>
    <option value="<?=$i;?>"<?=($current === $i ? ' selected="selected"' : NULL);?>><?=$i;?></option>
<? } ?>
</select>