Есть ли простой способ автоматически форматировать даты в соответствии с локалью в Flex 4? - PullRequest
0 голосов
/ 30 сентября 2010

Я понимаю, что можно использовать локальные ресурсы ResourceBundles в сочетании с DateFormatters для форматирования дат в соответствии с локалью.Однако это ручной процесс - есть ли автоматический способ сделать это или установить значение по умолчанию для приложения?

Например, в Java все ваши даты будут автоматически отображаться в дд / мм / гг или мм /формат дд / гг просто установив локаль.Во Flex выходные данные по умолчанию всегда будут в формате США, если не отформатированы вручную.Я ищу способ приблизиться к функциональности Java.

Ответы [ 3 ]

1 голос
/ 14 января 2012

Я сделал это недавно, используя классы flah.globalization: посмотрите очень информативно о получении локали и т. Д. http://www.adobe.com/devnet/flashplayer/articles/flash_globalization_package.html вот мой код:

не забудьте вызвать init ();на создание завершено!

<fx:Script>
    <![CDATA[

        import flash.globalization.DateTimeFormatter;
        import flash.globalization.DateTimeStyle;
        import flash.globalization.StringTools;

        import mx.collections.ArrayCollection;

        import spark.events.IndexChangeEvent;


        [Bindable]
        private var listColl:ArrayCollection;

        private var localeList:Array = new Array("en-US", "fr-FR", "es-ES","ja-JP", "hi-IN","ru-RU");


        private var country:String;


        private function init():void{

            // set the dp for drop down;
            listColl = new ArrayCollection(localeList);
            country = localeList[0];
        }


    private function doDateLabel(item:Date):String {

    trace("input = " + item);

    if(item != null) {


        var locale:String = country;
        if(locale != null){

        var dtf:DateTimeFormatter = new DateTimeFormatter(locale);

            dtf.setDateTimeStyles(DateTimeStyle.SHORT, DateTimeStyle.NONE);
        /*
            DateTimeSyle.MEDIUM
        DateTimeSyle.LONG   

            */


            var shortDate:String = dtf.format(item);
            trace(shortDate + " (" + dtf.getDateTimePattern() + ")");

            }    
        }
    return shortDate;
    }

        protected function dropDownList_changeHandler(evt:IndexChangeEvent):void {
            country = countryList.selectedItem;
        }




    ]]>
</fx:Script>


<s:HGroup width="100%" height="100%" gap="20" top="50"  left="50">

    Hope that's what you were after 
    <mx:DateField id="begin" width="200"
                  showToday="true"
                  labelFunction="doDateLabel" 
                  parseFunction="null"/>

    <s:DropDownList id="countryList"
                    requireSelection="true" prompt="Please select an Country" 
                    horizontalCenter="0" top="20" dataProvider="{listColl}" 
                    change="dropDownList_changeHandler(event);">

    </s:DropDownList>
</s:HGroup>
0 голосов
/ 06 октября 2010

Это функция Flash Player 10.1, помещенная в пакет flash.globalization

Пакет flash.globalization во Flash Player: культурное разнообразие без сложности

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