Get Smarty


Smarty Icon

You may use the Smarty logo according to the trademark notice.

Smarty Template Engine Smarty Template Engine

For sponsorship, advertising, news or other inquiries, contact us at:

Sites Using Smarty

Buy cheap glasses from and save up to 80%.

Where to buy prescription glasses? is your best choice!

Where to buy discount wedding dresses and cheap smart dresses free shipping -

Shop for 2018 World Cup Football Boots Online sale at

Browse best 2018 world cup soccer cleats and shoes from



{html_select_date}是一个 自定义函数,用于创建一个选择日期的下拉框。 它可以显示任何或者全部的年、月、日。 任何不在上面列表中的键值对属性,都会被输出到<select>标签中作为属性和值。

参数名称 类型 必选参数 默认值 说明
prefix string No Date_ 下拉框名称的前缀
time 时间戳, DateTime, mysql时间戳或任何strtotime() 能支持的字符串,或者是数组(当设置了field_array) No 当前 时间戳 默认选中的日期。如果提供了数组,那么field_array和prefix属性将单独作用在每个数组元素上, 包括年月日。
start_year string No 当前年份 下拉框开始显示的年份,可以设置一个年份数字或者默认当前年份(+/- N)
end_year string No same as start_year 下拉框结束显示的年份,可以设置一个年份的数字或者默认当前年份(+/- N)
display_days boolean No TRUE 是否显示日期
display_months boolean No TRUE 是否显示月份
display_years boolean No TRUE 是否显示年份
month_format array No null 月份显示的字符串的数组.如 array(1 => 'Jan', …, 12 => 'Dec')
month_names string No %B 月份显示的格式 (strftime)
day_format string No %02d 日期显示的格式 (sprintf)
day_value_format string No %d 日期值显示的格式 (sprintf)
year_as_text boolean No FALSE 是否将年份显示为文字
reverse_years boolean No FALSE 是否按倒序显示年份
field_array string No null 如果设置了field_array值,则下拉框的值发送的PHP时,将会是 值[Day], 值[Year], 值[Month]的格式。
day_size string No null 附加日期select标签的size属性
month_size string No null 附加月份select标签的size属性
year_size string No null 附加年份select标签的size属性
all_extra string No null 附加给全部select/input标签附加的属性
day_extra string No null 附加给日期select/input标签附加的属性
month_extra string No null 附加给月份select/input标签附加的属性
year_extra string No null 附加给年份select/input标签附加的属性
all_id string No null 全部select/input标签的ID值
day_id string No null 日期select/input标签的ID值
month_id string No null 月份select/input标签的ID值
year_id string No null 年份select/input标签的ID值
field_order string No MDY 显示各下拉框的顺序
field_separator string No \n 显示在各字段之间间隔的字符串
month_value_format string No %m 月份值的显示格式(按strftime())默认是 %m
all_empty string No null 该属性可以在每个下拉框的第一行显示文字,并以作为它的值。 在需要让下拉框的第一行显示请选择 的情况下比较有用。
year_empty string No null 该属性可以在年份下拉框的第一行显示文字,并以作为它的值。 在需要让年份下拉框的第一行显示请选择年份 的情况下比较有用。 注意你可以使用如-MM-DD的值,作为时间属性来显示没有选中的年份。
month_empty string No null 该属性可以在月份下拉框的第一行显示文字,并以作为它的值。 注意你可以使用如YYYY--DD的值,作为时间属性来显示没有选中的月份。
day_empty string No null 该属性可以在日期下拉框的第一行显示文字,并以作为它的值。 注意你可以使用如YYYY-MM-的值,作为时间属性来显示没有选中的日期。


日期技巧文章中,介绍了 较有用的php函数来将{html_select_date}值转换成时间戳。

Example 8.16. {html_select_date}





<select name="Date_Month">
<option value="1">January</option>
<option value="2">February</option>
<option value="3">March</option>
  ..... snipped .....
<option value="10">October</option>
<option value="11">November</option>
<option value="12" selected="selected">December</option>
<select name="Date_Day">
<option value="1">01</option>
<option value="2">02</option>
<option value="3">03</option>
  ..... snipped .....
<option value="11">11</option>
<option value="12">12</option>
<option value="13" selected="selected">13</option>
<option value="14">14</option>
<option value="15">15</option>
  ..... snipped .....
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
<select name="Date_Year">
<option value="2006" selected="selected">2006</option>


Example 8.17. {html_select_date} 第二个地理

{* start and end year can be relative to current year *}
{html_select_date prefix='StartDate' time=$time start_year='-5'
   end_year='+1' display_days=false}


如果当前是 2000年 则输出:

<select name="StartDateMonth">
<option value="1">January</option>
<option value="2">February</option>
.... snipped ....
<option value="11">November</option>
<option value="12" selected="selected">December</option>
<select name="StartDateYear">
<option value="1995">1995</option>
.... snipped ....
<option value="1999">1999</option>
<option value="2000" selected="selected">2000</option>
<option value="2001">2001</option>


参见 {html_select_time}, date_format, $smarty.now日期技巧.

No comments for this page.
Post a Comment
All comments are moderated. Support questions are ignored, use the forums instead.
Email: (not shown)
What is 13 plus 16? (Are you human?)