2016-08-18 56 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

相关问题