在Flex中将英国日期转换为美国日期

时间:2013-06-05 07:19:43

标签: actionscript-3 flex flex4

您好,有很多将美国格式化日期(MM / DD / YYYY)转换为英国日期(DD / MM / YYYY),但我正在尝试相反:我收到一个负载英国日期(DD-MM-YYYY)来自我试图格式化为DD-MMM-YYYY的服务器(例如:2013年1月11日),但Flex认为它正试图转换美国时代,所以当它变为17- 02-2013,它返回一个空字符串,因为没有17个月。 我怎么说它我给它英国约会而不是美国约会? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

简短回答,你不能。

更长的答案,没有足够的信息来确定日期格式。如您所见,在某些情况下,您可以确定日期对于预期格式无效(17-02-2013 - 因为17不是有效月份,它必须是DD-MM-YYYY而不是MM-DD- YYYY),但对于不到一半的日期你不能分辨(是01-02-2013应该是1月2日还是2月1日?)

如果你知道日期应该是特定的格式,你可以使用DateField.stringToDate来解析字符串:

var value:Date = DateField.stringToDate(dateString, 'DD-MM-YYYY');

答案 1 :(得分:0)

好的,最后用这个丑陋的黑客来解决它:最后将字符串转换为数组并重新组织它以便在使用结果上的DateFormatter.format之前它符合美国格式。必须有一个更优雅的方式...

<Script>

    public convertDateStringToUS( date : String ) : String
    {
       var dateArray : Array = date.split( "-" );
       var day = dateArray[0];
       var month = dateArray[1];
       var year = dateArray[2];
       date = month + "-" + day + "-" + year;
       return date
    }

</Script>

<declarations>

    <mx:DateFormatter id="dateFormatter" 
                      formatString="DD-MMM-YYYY" />

</declarations>

<s:Label id="myDateLabel"
         text =" { dateFormatter.format( convertDateStringToUS( date ) ) } "/>