【问题标题】:I have a function that changes months into numbers, but I'd like to add 0 before the month's number我有一个将月份更改为数字的功能,但我想在月份数字前添加 0
【发布时间】:2016-08-18 22:23:29
【问题描述】:

我有这样的约会:

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);

所以str 将是19/8/2016,但我希望str 是19/08/2016(在8 之前添加0)。

我该怎么做?

【问题讨论】:

  • String(+i+1) 是做什么的?我以前从未见过。
  • 您可能想要检查月份是否小于 10,如果是,则通过执行 "0" + String(i+1) 将 "0" 添加到 String(i+1)(不确定 + 是否为AS3 中的连接运算符,但我认为是)。
  • @JonnyHenly 在 (+i+1) 中,前导 + 是多余的,因为它不会改变 i 的符号。
  • @dene : String(+i+1) 未编辑,但在我认为的原始消息中由 user5870211 使用。但可以肯定的是它是多余的;)

标签: actionscript-3


【解决方案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

【讨论】:

  • 希望对您有所帮助。
  • 任何反馈@user5870211 ?如果是,您可以对答案投赞成票或将其标记为已解决,如果不是,您可以投反对票并告诉我为什么这没有帮助。
【解决方案2】:

向数字添加前导零通常称为零填充。

下面是执行此操作的函数,来自答案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);

【讨论】:

  • @dene : 我不知道您为什么建议使用自制方法,因为您可以轻松使用内置的 DateTimeFormatter 类?
  • 我不确定这两种方法之间的时间增益......经过大量转换后的 getTimer() 可能会显示转换/格式化日期对象的最佳方法是什么这个案例。
猜你喜欢
  • 2021-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-30
  • 1970-01-01
  • 1970-01-01
  • 2021-01-23
相关资源
最近更新 更多