2016-08-18 44 views
0

前加0我有這樣一個日期:我有改變月份成數的函數,但我想了一個月的數量

19/août/2016 (août = august) 

而且我有以下功能月份,它就變成數量:

function swapMonthForNumber(str:String):String { 
    //do the same line of code for every item in the array 
    for(var i:int=0;i<months.length;i++){ 
     //i is the item, which is 0 based, so we have to add 1 to make the right month number 
     str = str.replace(months[i],String(+i+1)); 
    } 

    //return the updated string 
    return str; 
} 

str = swapMonthForNumber(mySharedObject.data.theDate); 
trace("Php will use this date :"+str); 

所以str19/8/2016,但我想str19/08/2016(添加08)。

我該怎麼做?

+0

是什麼'字符串(+ I + 1)'做什麼?我以前從來沒有見過。 –

+1

您可能要檢查月份是否小於10,如果是這樣,則通過執行「0」+ String(i + 1)來爲「String(i + 1)」預留一個「0」 '(不確定'+是否是AS3中的連接運算符,但我認爲是)。 –

+0

@JonnyHenly在(+ i + 1)中領先的+是多餘的,因爲它不會改變i的符號。 – dxb

回答

0

將前導零添加到數字通常稱爲零填充。

下面是一個函數來做到這一點,從答案here

public function zeroPad(number:int, width:int):String { 
    var ret:String = ""+number; 
    while(ret.length < width) 
     ret="0" + ret; 
    return ret; 
} 

在你swapMonthForNumber功能,在for循環,交換代碼如下:

var month = zeroPad(i + 1, 2); 
str = str.replace(months[i], month); 
+0

@ dene:我不知道你爲什麼建議使用自制的方法,因爲你可以很容易地使用內置的DateTimeFormatter類? – tatactic

+1

@ttactic好電話 – dxb

+0

我不確定兩種方法之間的時間增益... 一個getTimer()經過很多轉換後可能會顯示什麼是轉換/格式化Date對象的最佳方法這個案例。 – tatactic

1

退房的Date類的參考!

如果忘了提這個鏈接:flash.globalization.DateTimeFormatter

DateTimeFormatter(requestedLocaleIDName:String, dateStyle:String = "long", timeStyle:String = "long") 

下面是一個例子。

import flash.globalization.DateTimeFormatter; 
var df:DateTimeFormatter = new DateTimeFormatter(LocaleID.DEFAULT, DateTimeStyle.SHORT, DateTimeStyle.NONE); 
var currentDate:Date = new Date(2016,7,19); 
var shortDate:String = df.format(currentDate); 
trace (shortDate); 

// output : 19/08/2016 

DateTimeStyle

LocaleID

+0

我希望這會幫助你。 – tatactic

+0

任何反饋@ user5870211? 如果是的話,你可能會贊成答案或將其標記爲已解決,如果沒有,您可以倒計時並告訴我爲什麼這沒有幫助。 – tatactic

相關問題