FLEX中日期时间计算的例子(转载)

日期计算在很多开发语言中都是一个让人“讨厌”的问题,接下来的例子演示了日期时间相关的一些计算,相信比较符合一些“懒人”的胃口。 :)

让我们先来看一下Demo可以右键View Source或点击这里察看源代码):

下面是完整实现代码(或点击这里察看):

Download:  main.mxml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
  3.         layout="vertical"
  4.         verticalAlign="middle"
  5.         backgroundColor="white"
  6.         creationComplete="init()">
  7.  
  8.     <mx:Script>
  9.         <![CDATA[
  10.             import mx.controls.dataGridClasses.DataGridColumn;
  11.             private function init():void {
  12.                 var zeroDate:Date = new Date(0);
  13.  
  14.                 /* fullYear */
  15.                 arrColl.addItem({label:"+2 years", data:dateAdd("fullYear", 2, zeroDate)});
  16.                 arrColl.addItem({label:"-2 years", data:dateAdd("fullYear", -2, zeroDate)});
  17.                 /* month */
  18.                 arrColl.addItem({label:"+11 months", data:dateAdd("month", 11)});
  19.                 arrColl.addItem({label:"-11 months", data:dateAdd("month", -11)});
  20.                 /* date */
  21.                 arrColl.addItem({label:"+4 date", data:dateAdd("date", 4)});
  22.                 arrColl.addItem({label:"-4 date", data:dateAdd("date", -4)});
  23.                 /* hours */
  24.                 arrColl.addItem({label:"+6 hours", data:dateAdd("hours", 6)});
  25.                 arrColl.addItem({label:"-6 hours", data:dateAdd("hours", -6)});
  26.                 /* minutes */
  27.                 arrColl.addItem({label:"+45 minutes", data:dateAdd("minutes", 45)});
  28.                 arrColl.addItem({label:"-45 minutes", data:dateAdd("minutes", -45)});
  29.                 /* seconds */
  30.                 arrColl.addItem({label:"+900 seconds", data:dateAdd("seconds", 900)});
  31.                 arrColl.addItem({label:"-900 seconds", data:dateAdd("seconds", -900)});
  32.                 /* milliseconds */
  33.                 arrColl.addItem({label:"+720000 milliseconds", data:dateAdd("milliseconds", 720000)});
  34.                 arrColl.addItem({label:"-720000 milliseconds", data:dateAdd("milliseconds", -720000)});
  35.             }
  36.  
  37.             private function dateAdd(datepart:String = "", number:Number = 0, date:Date = null):Date {
  38.                 if (date == null) {
  39.                     /* Default to current date. */
  40.                     date = new Date();
  41.                 }
  42.  
  43.                 var returnDate:Date = new Date(date.time);;
  44.  
  45.                 switch (datepart.toLowerCase()) {
  46.                     case "fullyear":
  47.                     case "month":
  48.                     case "date":
  49.                     case "hours":
  50.                     case "minutes":
  51.                     case "seconds":
  52.                     case "milliseconds":
  53.                         returnDate[datepart] += number;
  54.                         break;
  55.                     default:
  56.                         /* Unknown date part, do nothing. */
  57.                         break;
  58.                 }
  59.                 return returnDate;
  60.             }
  61.  
  62.             private function data_labelFunc(item:Object, column:DataGridColumn):String {
  63.                 return dateFormatter.format(item[column.dataField]);
  64.             }
  65.         ]]>
  66.     </mx:Script>
  67.  
  68.     <mx:ArrayCollection id="arrColl" />
  69.  
  70.     <mx:DateFormatter id="dateFormatter"
  71.             formatString="YYYY/MM/DD HH:NN:SS" />
  72.  
  73.     <mx:Label text="Now: {dateAdd()}" />
  74.     <mx:DataGrid id="dataGrid"
  75.             dataProvider="{arrColl}"
  76.             sortableColumns="false"
  77.             width="400">
  78.         <mx:columns>
  79.             <mx:DataGridColumn dataField="label"
  80.                     headerText="Label"
  81.                     width="150" />
  82.             <mx:DataGridColumn dataField="data"
  83.                     headerText="YYYY/MM/DD HH:NN:SS"
  84.                     labelFunction="data_labelFunc" />
  85.         </mx:columns>
  86.     </mx:DataGrid>
  87.  
  88. </mx:Application>

代码:Peter deHaan 翻译/整理/编译:minidxer 

转载于:https://www.cnblogs.com/likedotnet/archive/2010/02/09/1666853.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值