2011-01-12 7 views
10

würde Ich mag eine Actionscript-Bibliothek finden, die Strings wie nehmen:Parse Dauern in einfachen englischen

  • Zwei Tage
  • 2h
  • 1 Monat
  • eine Woche

und parse sie in Dauer (die Zeit in irgendeiner Einheit zurückgebend).

Es scheint, als wäre es schon so oft gemacht worden und ich würde es hassen, so etwas selbst zu implementieren.

Wenn nicht in ActionScript dann in Python (Ich kann dies auf der Serverseite ausführen, denke ich).

(beachten Sie bitte, ich bin für das Parsen suchen, nicht die Formatierung ..)

+0

FYI mantain, fanden diese: https: //github.com/gitpan/Time-Duration-Parse/blob/master/lib/Time/Duration/Parse.pm Obwohl es auf den ersten Blick nicht sehr robust erscheint –

+0

Etwas wie http: // stackoverflow.com/questions/3451031/Ist-ein-Javascript-Parser-wie-Datum-js-für-Zeit-Schätzungen? – Stobor

+0

Ja, danke. obwohl der dort angegebene Beispielcode ziemlich einfach ist. Ich war auf der Suche nach etwas robusterem ... sonst macht es nicht viel mehr Arbeit. –

Antwort

0

Ich vermute, ein JavaScript-lib funktionieren wird, da beide AS und JS-Sprachen sind vom selben ECMA-Standard, mit ein paar kleinen Unterschieden.

http://www.datejs.com/ macht was Sie wollen in JS.

+0

analysiert es Dauern oder nur Daten? –

1

Nur für den Datensatz, Javascript wird nicht in Flex direkt funktionieren. Im sicher, dass Sie das wissen.

Jetzt datejs ist eine wirklich coole Bibliothek. Was Sie wirklich tun sollten, ist, nutzen Sie die Vorteile von JS in AS mit der externalInterface-Klasse.

Verwenden Sie den folgenden Code in AS3, und stellen Sie sicher, dass datejs.js im HTML-Wrapper enthalten ist, in dem dieses von AS3 generierte swf verwendet wird.

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

Für ExternalInterface Details Sie anzeigen können: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/external/ExternalInterface.html

+0

Ich sehe in den docs von datejs nichts, was darauf hindeutet, dass es _durations_ analysieren kann ... es analysiert Daten. Das hilft mir nicht wirklich. –

+0

http://code.google.com/p/datejs/wiki/APIDocumentation API-Referenz für datejs Was Sie tun können, ist Date.today() Monate (2) -. Date.today() returs Anzahl von Millisekunden zwischen heute und demselben Datum zwei Monate später. – Neeraj

+0

Ähnlich wird es Dinge für Date.today(). Stunden (2) Date.today.minutes (2) etc. – Neeraj

0

Der Standard * nix Anwendung date(1) ist sehr gut in solchen Spezifikationen Parsen, wie Sie unten (Shell Scripting) zu sehen.

$ 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 

Vielleicht können Sie einen Blick auf die für die weitere Aufklärung Code GNU coreutils Quelle nehmen.

+0

$ info coreutils 'Relative Elemente in Datumsstrings' – milton

0

Ich denke, wenn Sie es in AS3 tun, ist die beste Option (wie ich in den anderen Antworten sehe), datejs zu verwenden, JavaScript-Code auf AS3 portieren ist nicht schwer, und auch Sie haben den Vorteil Verwenden Sie ExternallInterface, wenn Sie es nicht portieren möchten.

Denken Sie daran, dass Actionscript ist in der Tat ein Klon JavaScript, so dass Sie den Code datejs einfügen können und die kleinen Details der Syntax ändern, aber der Kern intakt

Verwandte Themen