Как получить строку формата даты для конкретной локали в Flex/ActionScript 3?

Как получить строку формата даты для конкретной локали в Flex/ActionScript 3? Я не могу найти метод для возврата фактической строки формата (той, которая указывает формат даты) на основе текущей локали. Я задаю этот вопрос, потому что надеялся найти способ преобразовать строку в дату на основе текущего формата даты SHORT для локали. Java позволяет вызывать:

DateFormat format = DateFormat.getDateInstance(DateFormat.SHORT, locale)

для получения экземпляра DateFormat, который форматируется в соответствии с форматом SHORT на основе языкового стандарта.

Существуют ли аналогичные функции в Adobe Flex (ActionScript 3) 3? Если нет, существует ли для этого надежная сторонняя библиотека?


person Sujan Kapadia    schedule 01.02.2010    source источник


Ответы (3)


Я только что нашел этот пакет, который выполняет свою работу. Вот описание класса DateTimeFormatter:

var formatter:DateTimeFormatter = new DateTimeFormatter(LocaleID.DEFAULT, DateTimeStyle.LONG, DateTimeStyle.SHORT);
var result:String = formatter.format(date);

Просто круто.

person Bruno Berisso    schedule 20.01.2011

Расширение ответа Годжана:

private function cc(event:FlexEvent):void {
    var formatter:DateTimeFormatter = new DateTimeFormatter(LocaleID.DEFAULT, DateTimeStyle.SHORT, DateTimeStyle.NONE);
    //now if publishDate is a mx:DateField, the formatString of spark and mx components are slightly different.
    //So, we replace all d with D and y with Y
    publishDate.formatString=replaceAll(formatter.getDateTimePattern(), ["d", "y"], ["D", "Y"]);
}

private function replaceAll(text:String, searchArray:Array, replArray:Array):String {
    for (var i:int=0; i<searchArray.length; i++) {
        var s:String=searchArray[i];
        var d:String=replArray[i];
        text=text.split(s).join(d);
    }
    return text;
}
person Pranav Hosangadi    schedule 25.02.2012

Да, я должен сказать, что Java лучше с датами - вы устанавливаете локаль, и автоматически ваши даты выводятся правильно! Я не могу найти такую ​​возможность во Flex.

Чтобы правильно выводить даты для каждой локали, я думаю, вам нужно сделать то, что написано в этой статье: http://livedocs.adobe.com/flex/3/html/help.html?content=l10n_1.html. Возможно, вам следует сделать это и в том же классе просто сделать эти строки, которые вы вытащили из файла локали, доступными для остальной части вашего приложения, тогда вы сможете работать с ними.

В противном случае, возможно, библиотека этого парня поможет вам? Я не уверен. http://flexoop.com/2008/12/flex-date-utils-date-and-time-format-part-ii/

person Fletch    schedule 30.09.2010