用简单的英语解析持续时间

时间:2011-01-12 09:20:31

标签: flex actionscript time

我想找一个可以采用以下字符串的动作脚本库:

  • 两天
  • 2H
  • 一个月
  • 一周

并将它们解析为持续时间(以某个单位返回时间)。

之前似乎已经做了很多次,我不想自己实施这样的事情。

如果不是在actionscript中那么在python中(我可以在服务器端运行它,我猜)。

(请注意我正在寻找解析,而不是格式化..)

6 个答案:

答案 0 :(得分:1)

仅供记录,Javascript将无法直接在Flex中运行。我相信你知道这一点。

现在 datejs 是一个非常酷的库。你应该真正做的是,使用externalInterface类在AS中使用JS的优势。

在AS3中使用以下代码,并确保在html包装器中包含datejs.js,其中将使用此AS3生成的swf。

//--------CODE IN AS-----------------//
public function returnDate(date:String):void
{
    Alert.show(date);
}

ExternalInterface.addCallback("returnDate",returnDate);

public function parseDate(userInputString:String):void
{
   ExternalInterface.call("parseStringByUser",userInputString);
}

//------------CODE IN JS----------------//
function parseStringByUser(userInputString)
{
     var parsedDate= Date.parse(userInputString);
     //the line below calls the AS3 function , as AS3 itself exposed it using the ExternalInterface.
         returnDate(parsedDate);
}

对于externalInterface详细信息,您可以查看: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/external/ExternalInterface.html

答案 1 :(得分:0)

有人在这里问了一个类似的问题: Pretty Date Text in Flex / Flash / Java / C#

答案 2 :(得分:0)

我猜javascript lib会起作用,因为AS和JS语言来自相同的ECMA标准,但有一些细微差别..

http://www.datejs.com/在JS中做你想做的事。

答案 3 :(得分:0)

标准的* nix应用程序date(1)非常擅长解析这些规范,如下所示(shell脚本)。

$ date; date -d '1 week 2 days 2 hours'
Fri Feb  4 16:31:28 AMT 2011
Sun Feb 13 18:31:28 AMT 2011

也许您可以查看GNU coreutils源代码以获得进一步的启发。

答案 4 :(得分:0)

我认为如果你打算在AS3中做到最好的选择(正如我在其他答案中看到的那样)是使用datejs,将JavaScript代码移植到AS3并不难,而且你还有使用它的优势ExternallInterface如果您不想移植它。

请记住,ActionScript确实是一个JavaScript克隆,因此您可以粘贴datejs的代码并更改语法的细节,但保留核心完整

答案 5 :(得分:0)