?
转冷枫的,他写的太详细了,
日期选取组件用于显示日历和进行某天的选择,使用的是AS中的Date类。
创建DateChooser组件
下面的例子创建了一个日历组件,并且选中日期为2004年12月22号:
<mx:DateChooser id='date1' >
<mx:selectedDate>
<mx:Date month='12' date='12' year='2004' />
</mx:selectedDate>
</mx:DateChooser>
我们还可以通过脚本的方式来设置选中日期
<mx:Script>
<![CDATA[
function initDC()
{
date1.selectedDate= new Date (2004,12,12);
}
]]>
</mx:Script>
<mx:DateChooser id='date1' initialize='initDC();' />
DateChooser组件使用了AS的Date类的一些方法
可以使用get和set方法来获取选中的日期值以及设置日期值。下面的例子比较详细的描述了DateChooser组件的使用。
<mx:Script>
<![CDATA[
function useDate(eventObj)
{
//Access the Date object from the event object.
day.text=eventObj.target.selectedDate.getDay();
date.text=eventObj.target.selectedDate.getDate();
month.text=eventObj.target.selectedDate.getMonth();
year.text=eventObj.target.selectedDate.getFullYear();
wholeDate.text=eventObj.target.selectedDate.getFullYear() +
'/' + (eventObj.target.selectedDate.getMonth()+1) +
'/' + eventObj.target.selectedDate.getDate();
}
]]>
</mx:Script>
<mx:DateChooser id='date1' change='useDate(event)' />
<mx:Form>
<mx:FormItem label='Day' >
<mx:TextInput id='day' width='100' />
</mx:FormItem >
<mx:FormItem label='Day of month' >
<mx:TextInput id='date' width='100' />
</mx:FormItem >
<mx:FormItem label='Month' >
<mx:TextInput id='month' width='100' />
</mx:FormItem >
<mx:FormItem label='Year' >
<mx:TextInput id='year' width='100' />
</mx:FormItem >
<mx:FormItem label='Date' >
<mx:TextInput id='wholeDate' width='300' />
</mx:FormItem >
</mx:Form>
这个例子通过响应组件的change事件来获取选中的日期信息,相信大家也不难看懂。
禁用某个日期段的选取
假如要禁用周一到周四的日期选择,可以使用
<mx:DateChooser id='date1' >
<mx:disabledDays>
<mx:Array>
<mx:String>1</mx:String>
<mx:String>2</mx:String>
<mx:String>3</mx:String>
<mx:String>4</mx:String>
</mx:Array>
</mx:disabledDays>
</mx:DateChooser>
更简单的写法为:
<mx:DateChooser id='date1' disabledDays='[1,2,3,4]' />
或者
<mx:Script>
<![CDATA[
function initDC()
{
date1.disabledDays=[1,4];
}
]]>
</mx:Script>
<mx:DateChooser id='date1' initialize='initDC();' />
个人觉得第三种方法比较通用,可以对日历进行初始化的设置。
注意:正确的说法应该是禁用第2~5列的日期。
更改星期名称
默认的日历星期名显示为英文,如果要更改成中文名称,可以用:
<mx:DateChooser id='date1' change='useDate(event);' >
<mx:dayNames>
<mx:Array>
<mx:String>日</mx:String>
<mx:String>一</mx:String>
<mx:String>二</mx:String>
<mx:String>三</mx:String>
<mx:String>四</mx:String>
<mx:String>五</mx:String>
<mx:String>六</mx:String>
</mx:Array>
</mx:dayNames>
</mx:DateChooser>
请注意,如果没有其它设置,数组的第一个元素就表示一周的第一天。当然,最简洁的还是AS的实现方法,而且更加灵活。
//设置星期显示名称
date1.dayNames=['日','一','二','三','四','五','六'];
//把周一作为每周的第一天
date1.myDC.firstDayOfWeek = 1;
//设置日历头部样式为绿色
date1.setStyle('headerColor',0x00ff00);
//设置字体样式为斜体
date1.setStyle('fontStyle','italic');
//设置日历的选择范围2004.1.1~2004.12.23
date1.selectableRange =
{ rangeStart: new Date(2004,1,1),rangeEnd: new Date(2004,23) };
DateChooser组件的常用属性和事件还有
01 :
02 : dayNames //星期的名称显示
03 : disabledDays //不可用的星期
04 : disabledRanges //不可用的日期范围
05 : displayedMonth //当前显示的月份
06 : displayedYear //当前显示的年份
07 : firstDayOfWeek //每周的第一天( 0~6 0表示dayNames中的第一个元素,依次类推 )
08 : headerStyle //头部样式
09 : todayStyle //今天的样式
10 : weekDayStyle //周末的样式
11 : monthNames //月份的名称显示
12 : selectableRange //可以选择的日期范围 由rangeStart 和 rangeEnd 指定
13 : selectedDate //选中的日期
14 : showToday //是否高亮显示今天的日期
15 :
16 : change //选中日期的事件响应
17 : scroll //移动的事件响应
通过对这些属性的设置你可以定义更强大的日历组件了。
?
?
?
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
?
?
- 1、<mx:DateField?yearNavigationEnabled="true"?change="dateChanged(DateField(event.target).selectedDate)"?/> ??
- ??
-
yearNavigationEnabled="true"?这个可以直接上调下调年份,比按前后箭头方便些 ??
- ??
-
2、<mx:DateField?id="dateField2"?yearNavigationEnabled="true"??
-
????????????disabledRanges="{[?{rangeEnd:?new?Date(2006,?5,?1)}?]}"?/> ??
- ??
-
2006年5月1日以前的不可选 ??
- ??
-
3、<mx:DateField?id="dateField2"?yearNavigationEnabled="true"??
-
????????????selectableRange="{{rangeStart?:?new?Date(2006,?rangeEnd?:?new?Date(2006,5,30)}}"?/> ??
- ??
- 日期可选范围 ??
- ??
-
4、<mx:DateField?id="dateField2"?yearNavigationEnabled="true"??
-
????????????selectableRange="{{rangeStart?:?new?Date(2006,30)}}"?formatString="YYYY-MM-DD"?/> ??
- ??
-
文本字段中所显示日期的格式。此属性包含?"MM"、"DD"、"YY"、"YYYY"、分隔符和标点符号的任意组合。 ??
- ??
-
5、显示格式若干属性:如,minYear最小年份,monthNames月份名,monthSymbol月份名后面的显示,showToday当日加亮,firstDayOfWeek?第一列显示的星期 ??
- ??
-
6、待。。。。。??
1、<mx:DateField yearNavigationEnabled="true" change="dateChanged(DateField(event.target).selectedDate)" />
yearNavigationEnabled="true" 这个可以直接上调下调年份,比按前后箭头方便些
2、<mx:DateField id="dateField2" yearNavigationEnabled="true"
disabledRanges="{[ {rangeEnd: new Date(2006,1)} ]}" />
2006年5月1日以前的不可选
3、<mx:DateField id="dateField2" yearNavigationEnabled="true"
selectableRange="{{rangeStart : new Date(2006,rangeEnd : new Date(2006,30)}}" />
日期可选范围
4、<mx:DateField id="dateField2" yearNavigationEnabled="true"
selectableRange="{{rangeStart : new Date(2006,30)}}" formatString="YYYY-MM-DD" />
文本字段中所显示日期的格式。此属性包含 "MM"、"DD"、"YY"、"YYYY"、分隔符和标点符号的任意组合。
5、显示格式若干属性:如,minYear最小年份,monthNames月份名,monthSymbol月份名后面的显示,showToday当日加亮,firstDayOfWeek 第一列显示的星期
6、待。。。。。
?
- <?xml?version="1.0"?encoding="utf-8"?> ??
-
<mx:Application?xmlns:mx="http://www.adobe.com/2006/mxml"??
-
layout="absolute"??
-
verticalAlign="middle"??
-
backgroundColor="#FCF9F9"> ??
- ??
- ??
- ??
-
????<mx:ComboBox?x="10"?y="168"></mx:ComboBox> ??
- ??
- ??
-
????<mx:ComboBox?x="10"?y="248"></mx:ComboBox> ??
-
????<mx:DateField?x="237"?y="168"?width="369"?height="34"?yearNavigationEnabled="true"??monthSymbol="月月发工资"??yearSymbol="年年有余"?dayNames="[日,一,二,三,四,五,六]"? ??
-
????????monthNames="[一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月]"?formatString="MM-DD-YYYY"/> ??
- ???? ??
-
????<mx:DateField?x="10"?y="299"?yearNavigationEnabled="true"??
-
??????????dayNames="[日,一,二,三,四,五,六]"?monthNames="[一月,二月,三月,四月,五月,六月,七月,八月,九月,十,??????十一月,十二月]"?formatString="YYYY-MM-DD"?width="156"?height="38"/> ??
- ??
- </mx:Application>? ??
- ???
?
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
?
?
?
DataField控件可以让用户在图形化日历中选择日期。DateChooser控件的用户界面是日历。DateField控件有一个文本框,使用在弹出的日期选择器中选择的日期作为结果。DateField控件的属性集市DateChooser控件属性集的超集。
DateField这个控件由于功能单一,没什么好拓展的,所以比较简单。先举个例子
view plain
copy to clipboard
print
?
- <?xml?version="1.0"?encoding="utf-8"?>??
- <!--?Simple?example?to?demonstrate?the?DateField?control.?-->??
- <mx:Application?xmlns:mx="http://www.adobe.com/2006/mxml"?layout="horizontal"?verticalAlign="top"??
- ????horizontalAlign="center"?backgroundGradientColors="[0x000000,0x323232]"?paddingTop="0"?paddingBottom="0"?viewSourceURL="srcview/index.html">??
- ??
- ????<mx:Script>??
- ??????<!--[CDATA[??
- ??
- ?????????//?Event?handler?for?the?DateField?change?event. ??
- ?????????private?function?dateChanged(date:Date):void?{??
- ????????????if?(date?==?null)??
- ????????????????selection.text?=?"Date?selected:?";??????????????????
- ????????????else??
- ????????????????selection.text?=?"Date?selected:?"?+?date.getFullYear().toString()?+???
- ????????????????????'/'?+?(date.getMonth()+1).toString()?+?'/'?+?date.getDate();??
- ?????????}??
- ??????]]-->??
- ????</mx:Script>??
- ???
- ?<mx:DateFormatter?id="df"/>??
- ??
- ????<mx:Panel?title="DateField?Control?Example"?width="600"?color="0xffffff"?borderAlpha="0.15"?height="240"??
- ???????layout="horizontal"?horizontalGap="15"?paddingLeft="10"?paddingTop="10"?paddingRight="10"?paddingBottom="10"?horizontalScrollPolicy="off"?verticalScrollPolicy="off">??
- ??????????
- ????????<mx:VBox?width="50%"?borderColor="0xDCDCDC"?borderStyle="solid"?height="100%"?paddingLeft="10">??
- ????????????<mx:Label?id="selection"?color="0x323232"?text="Date?selected:"?/>??
- ??????????????
- ????????????<mx:DateField?id="dateField1"?yearNavigationEnabled="true"??
- ????????????????change="dateChanged(DateField(event.target).selectedDate)"?color="0x000000"/>??
- ??????????????????
- ????????????<mx:Label?color="0x000000"?text="Basic?DateField:"/>??
- ????????????<mx:Text?width="100%"?color="0x323232"??
- ????????????????text="Select?a?date?in?the?DateField?control.?Select?it?again?while?holding?down?the?Control?key?to?clear?it."/>??
- ??????????????
- ????????</mx:VBox>??
- ??????????
- ????????<mx:VBox?width="50%"?borderColor="0xDCDCDC"?borderStyle="solid"?height="100%"?paddingLeft="10">??
- ????????????<mx:Label?color="0x323232"?text="Date?selected:?{df.format(dateField2.selectedDate)}"/>??
- ??????????????
- ????????????<mx:DateField?id="dateField2"?yearNavigationEnabled="true"???
- ????????????????disabledRanges="{[?{rangeEnd:?new?Date(2008,?9,?31)}?]}"?color="0x000000"/>??
- ??????????????????
- ????????????<mx:Text?color="0x000000"?text="Disable?dates?on?or?before?Oct?31,?2008."/>??
- ????????</mx:VBox>??
- ??????????
- ????</mx:Panel>??
- </mx:Application>??
基本上DateField组件的使用和DateChooser差不多,掌握了DateChooser组件,DateField自然就不成问题。
另外注意知道的是DateField组件比DateChooser组件多了两个事件:
open 点击打开DateChooser组件的事件响应
close 用户选择了日期或者在DateChooser组件之外点击的事件响应
???
用以下方法来初始化Datafield
<mx:DateField id="date3" selectedDate="{new Date (2005,10)}"/>
?
下面讲下如何格式化时间,其实很简单DataField可以使用formatString来格式化
view plain
copy to clipboard
print
?
- <mx:DateField??monthNames='["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]'?formatString="YYYY-MM-DD"?width="120"/>??
最后讲下和时间格式相关的DateFormatter,注意格式表达式和JAVA中的不同
view plain
copy to clipboard
print
?
- private?static?var?dateFormatter:DateFormatter?=?new?DateFormatter();??
- ??/**?
- ???*?格式化日期,封装mx.formatters.DateFormatter类?
- ???*?可以在模式字符串中添加其它文本,以进一步设置字符串格式。可以使用标点、数字和所有小写字母。?
- ???*?应该避免使用大写字母,因为大写字母可能被解读为模式字母。?
- ???*??
- ???*?年份?
- ???*?YY?=?05?
- ???*?YYYY?=?2005?
- ???*?YYYYY?=?02005?
- ???*??
- ???*?一年中的月份?
- ???*?M?=?7?
- ???*?MM=?07?
- ???*?MMM=Jul?
- ???*?MMMM=?July?
- ???*??
- ???*?一月中的日期?
- ???*?D=4?
- ???*?DD=04?
- ???*?DD=10?
- ???*??
- ???*?星期中的天?
- ???*?E?=?1?
- ???*?EE?=?01?
- ???*?EEE?=?Mon?
- ???*?EEEE?=?Monday?
- ???*??
- ???*?A?am/pm?标记。??
- ???*??
- ???*?J?一天中的小时数?(0-23)。??
- ???*??
- ???*?H?一天中的小时数?(1-24)。??
- ???*??
- ???*?K?am/pm?中的小时数?(0-11)。??
- ???*??
- ???*?L?am/pm?中的小时数?(1-12)。??
- ???*??
- ???*?小时中的分钟数?
- ???*?N?=?3?
- ???*?NN?=?03?
- ???*??
- ???*?分钟中的秒数?
- ???*?SS?=?30?
- ???*??
- ???*?@param?value?日期?
- ???*?@param?formatString?格式?
- ???*?@param?return?指定格式的字符串?
- ???*/??
- ??public?static?function?formatDate(value:Object,?formatString:String="YYYY-MM-DD"):String?{??
- ???if?(value?==?null?||?StringUtil.trim(value.toString()).length?<=?0)?{??
- ????return?"-";??
- ???}??
- ???dateFormatter.formatString?=?formatString;??
- ???return?dateFormatter.format(value);??
- ??}??
?http://www.voidcn.com/article/p-hcjvuprn-hs.html
http://varyall.iteye.com/blog/806659