【问题标题】:Convert UK date to US date in Flex在 Flex 中将英国日期转换为美国日期
【发布时间】:2013-06-05 07:19:43
【问题描述】:

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

【问题讨论】:

  • 您收到的日期是String 还是Date 值类型?
  • 字符串。抱歉,这确实是有用的信息!

标签: actionscript-3 apache-flex flex4


【解决方案1】:

简短的回答,你不能。

更长的答案,没有足够的信息来确定日期格式。如您所见,在某些情况下,您可以确定日期对于预期格式无效(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');

【讨论】:

    【解决方案2】:

    好的,最后用这个丑陋的技巧解决了这个问题:最终将字符串转换为一个数组并重新组织它,以便在对结果使用 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 ) ) } "/>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多