2009-11-04 10 views
1

我有格式爲「2008年8月20日」的字符串。我希望將其轉換爲2008年8月20日或08/20/208?我怎樣才能做到這一點?如何格式化字符串日期在flex?

我只想從字符串中刪除所有連字符並將其轉換爲日期值。 dateFormatter函數僅接受格式爲mm/dd/yyyy的日期值。

有人可以幫助我..

我用正則表達式,並刪除了所有的連字符,從字符串。現在在一個數組中,我的值是20,Aug和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

我沒有一個方便的編譯器(所以我不能檢查這個),但不是日期構造函數期望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查找與給定月份名稱關聯的數字。再一次,我沒有編譯器,所以這可能是不對的。此外,還有一個更簡單的方法來做到這一點......現在只是想不到一個。

+0

我有dateArray [1]爲8月。如何將其更改爲一個數字? 因爲這個日期構造函數只有在給出一個數字時才起作用。但是我有8月份的價值,有沒有辦法將它改爲數字? – Angeline 2009-11-04 05:01:17

+0

謝謝......我也在搜索是否有任何函數給出月份的數字,如果月份字符串被傳遞。沒有得到這樣的功能。所以現在,要使用這個功能。謝謝你的協助。 :-) – Angeline 2009-11-04 05:24:45