2013-06-05 145 views
0

您好似乎有很多将美国格式化日期(MM/DD/YYYY)转换为英国日期(DD/MM/YYYY),但我试图做相反的事情:我从服务器接收一个英国日期(DD-MM-YYYY)的负载,我试图格式化为DD-MMM-YYYY(例如:2013年1月11日),但Flex认为它试图将美国天,所以当它获得17-02-2013,它返回一个空字符串,因为没有17个月。 我如何告诉它我给它的英国日期,而不是美国的日期? 在此先感谢。将英国日期转换为美国日期的灵活性

+0

你收到的日期作为'字符串'或'日期'值类型? –

+0

字符串。对不起,这确实是有用的信息! – digitalfishpond

回答

0

简短的回答,你不能。

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

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

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

谢谢,这工作:)当我被允许时会投票。 – digitalfishpond

0

OK,传开它与这个丑陋的黑客攻击结束:结束了该字符串转换成一个数组,并重新整理它,以便在对结果使用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)) } "/> 
相关问题