Вопрос

Есть ли какой-нибудь способ разобрать строку в формате HH: MM в объект 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");

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

  • DateField.stringToDate(ValueString:Строка, InputFormat:Строка): Дата
  • DateField.dateToString(значение: Дата, выходной шаблон:строка): Строка

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

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

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

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

-Адам

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top