如何在flex中格式化String的日期?

时间:2009-11-04 04:25:06

标签: flex date

我的字符串格式为“2008年8月20日”。我希望将其转换为2008年8月20日或2008年8月20日?我怎么能这样做?

我只想从String中删除所有这些连字符并将其转换为日期值。 dateFormatter函数仅接受格式为mm / dd / yyyy的日期值。

有人能帮帮我..

我使用了正则表达式并从字符串中删除了所有这些连字符。现在在数组中我有值,20,8月和2008年。如何在此之后转换为20/08/2008?

修改

  [Bindable]public var myDate:Date;

  public function init():void
  {
        var dateStr:String="20-Aug-2008";

        var rex:RegExp = /-/;

         var dateArray:Array = dateStr.split(rex);

         myDate= new Date(dateArray[0],dateArray[1],dateArray[2]);

  }

  <mx:DateFormatter id="DateDisplay" formatString="MM/DD/YYYY"/>

  <mx:TextArea id="date" text="{DateDisplay.format(myDate)}"/>

我在文本区域获得的值是:01/00 / NaN。我哪里出错?

1 个答案:

答案 0 :(得分:1)

我没有编译器方便(所以我不能检查这个),但是不是Date构造函数期望Year,Month(从零开始),Day?所以以下内容应该有效:

myDate = new Date(dateArray[2], dateArray[0] - 1, dateArray[1]);

(当然,您可能希望事先进行一些错误检查。)

来自:http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Date.html#includeExamplesSummary

编辑:更好的链接
http://livedocs.adobe.com/flex/2/langref/Date.html#Date%28%29
http://www.darronschall.com/weblog/2006/12/actionscript-30-tip-date-constructor.cfm

编辑2:糟糕。忘了你正在处理一个月份字符串,而不是一个数字。您可以执行以下操作:

function getMonth(monthString:String):int
{
    var months = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');

    for (var i:int=0; i<months.length; i++)
    {
        if months[i] == monthString)
        {
          return i;
        }
    }

    // not a valid month string
    return -1;
}

然后,使用getMonth查找与给定月份名称关联的数字。同样,我没有方便的编译器,所以这可能不对。此外,必须有一个更简单的方法来做到这一点......现在就想不到一个。