Разбор времени во Flex - PullRequest
       26

Разбор времени во Flex

3 голосов
/ 17 сентября 2008

Есть ли способ проанализировать строку в формате ЧЧ: ММ в объект Date (или другой), используя стандартные библиотеки?

Я знаю, что могу разобрать что-то вроде "17.09.2008 10:30" в объект Date, используя

var date:Date = new Date(Date.parse("9/17/2008 10:30");

Но я хочу разобрать всего лишь 10:30. Следующий код не будет работать.

var date:Date = new Date(Date.parse("10:30");

Я знаю, что могу использовать собственный RegEx, чтобы сделать это довольно легко, но кажется, что это возможно при использовании существующего Flex API.

Ответы [ 4 ]

3 голосов
/ 18 сентября 2008

Если вам нужно использовать именно тот формат, который вы указали, то вам нужно разобрать его самостоятельно.

Вот простой пример (не тестировался):

var str:String = "9/17/2008 10:30"

var items:Array = str.split(" ");
var dateElements:Array = items[0].split("/");
var timeElements:Array = items[1].split(":");

var n:Date = new Date(dateElements[2],
                        dateElements[0],
                        dateElements[1].
                        timeElements[0],
                        timeElements[1]);

Если время не выражено в 24 часах, то нет способа проверить AM или PM (код примет AM).

2 голосов
/ 19 сентября 2008

В качестве простого и бесплатного решения вы можете использовать некоторые статические методы DateField:

  • DateField.stringToDate (valueString: String, inputFormat: String): Date
  • DateField.dateToString (значение: Date, outputFattern: String): String

Но, к сожалению, они не поддерживают часы / минуты / секунды (только дату).

В вашем конкретном случае: объект Date всегда содержит также информацию о дате. Если это не важно, не могли бы вы просто объединить стандартную строку даты перед анализом?

1 голос
/ 17 сентября 2008

Рассматривали ли вы добавление "01/01/2000" к временной строке, а затем применение даты?

С другой стороны, вероятно, есть токенизатор, который примет входные данные и разделит их на: предоставляя массив строк, которые можно преобразовать в целые числа. Токенизатор тоже не сложно написать, и он может быть веселым, если его не существует в flex.

-Adam

0 голосов
/ 18 сентября 2008

Чтобы ответить на ваш конкретный вопрос: нет, нет библиотечной функции, которая делает то, что вы хотите, но нет библиотечной функции для разбора дат в формате ISO, в немецком формате, в шведском формате, датах, когда годы указаны римскими цифрами и т. д.

Почему бы не использовать регулярные выражения? Вот для чего они.

...