如何在Flex / ActionScript 3中检索特定于语言环境的日期格式字符串?我无法找到一种方法来返回基于当前语言环境的实际格式字符串(指定日期格式)。我问这个问题,因为我希望找到一种方法,根据语言环境的当前SHORT日期格式将String转换为Date。 Java允许人们调用:
DateFormat format = DateFormat.getDateInstance(DateFormat.SHORT, locale)
检索DateFormat实例,该实例根据区域设置根据SHORT格式进行格式化。
Adobe Flex(ActionScript 3)3中是否存在类似的功能?如果没有,是否存在可靠的第三方库?
答案 0 :(得分:2)
我刚刚找到了this包来完成这项工作。这里描述了DateTimeFormatter类:
var formatter:DateTimeFormatter = new DateTimeFormatter(LocaleID.DEFAULT, DateTimeStyle.LONG, DateTimeStyle.SHORT);
var result:String = formatter.format(date);
很酷。
答案 1 :(得分:1)
扩展Gojan的回答:
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;
}
答案 2 :(得分:0)
是的,我不得不说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/