Длительность разбора на простом английском - PullRequest
10 голосов
/ 12 января 2011

Я хотел бы найти библиотеку actioncript, которая может принимать строки вроде:

  • Два дня
  • 2h
  • один месяц
  • в неделю

и разберите их на длительность (возвращая время в некоторой единице).

Кажется, это было сделано много раз раньше, и я не хотел бы реализовывать такую ​​вещь сам.

Если не в ActionScript, то в Python (я могу запустить это на стороне сервера, я думаю).

(обратите внимание, я ищу синтаксический анализ, а не форматирование ..)

Ответы [ 6 ]

1 голос
/ 02 февраля 2011

Только для справки, Javascript не будет работать во Flex напрямую. Я уверен, что вы это знаете.

Теперь datejs - действительно классная библиотека. Что вам действительно нужно сделать, так это использовать преимущества JS в AS с использованием класса externalInterface.

Используйте следующий код в AS3 и обязательно включите datejs.js в оболочку html, в которой будет использоваться этот сгенерированный 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);
}

Подробнее о внешнем интерфейсе вы можете посмотреть: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/external/ExternalInterface.html

0 голосов
/ 09 апреля 2011

Я думаю, что если вы собираетесь сделать это в AS3, лучшим вариантом (как я вижу в других ответах) является использование datejs, перенос кода JavaScript на AS3 не сложен, а также у вас есть преимущество использованияExternallInterface если вы не хотите его переносить.

Помните, что ActionScript действительно является клоном JavaScript, поэтому вы можете вставить код datejs и изменить мелкие детали синтаксиса, но сохранить ядро ​​без изменений

0 голосов
/ 04 февраля 2011

Стандартное * nix-приложение date(1) очень хорошо разбирает такие спецификации, как вы можете видеть ниже (сценарии оболочки).

$ 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 для дальнейшего изучения.

0 голосов
/ 02 февраля 2011

Я предполагаю, что библиотека JavaScript будет работать, поскольку языки AS и JS относятся к одному и тому же стандарту ECMA, с небольшими отличиями.

http://www.datejs.com/ делает то, что вы хотите в JS.

0 голосов
/ 12 января 2011

кто-то задавал подобный вопрос здесь: Красивый текст даты в Flex / Flash / Java / C #

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...