【问题标题】:How to parse an ISO formatted date in Flex (AS3)?如何在 Flex (AS3) 中解析 ISO 格式的日期?
【发布时间】:2009-03-27 20:25:40
【问题描述】:

如何在 Flex (AS3) 中将 ISO 日期字符串解析为日期对象?

例如
2009-12-08T04:23:23Z
2009-12-08T04:23:23.342-04:00
等等……

【问题讨论】:

    标签: apache-flex actionscript-3 datetime parsing


    【解决方案1】:
    import com.adobe.utils.DateUtil;
    
    var dateString:String = "2009-03-27T16:28:22.540-04:00";
    var d:Date = DateUtil.parseW3CDTF(dateString);
    trace(d);
    var s:String = DateUtil.toW3CDTF(d);
    trace(s);
    
    [trace] Fri Mar 27 16:28:22 GMT-0400 2009 [追踪] 2009-03-27T20:28:22-00:00

    原来DateUtil 处理W3C Date and Time 规范中的所有内容。 AS3 日期不保持毫秒,但如果可用,它们将被丢弃。

    请注意,W3C 输出转换为 UTC(又名 GMT,或祖鲁时间)。

    【讨论】:

    • 由于需要 mx.formatters 包,该解决方案仅适用于 Flex,这真是令人遗憾。所以,如果你使用的是 Flash,那你就不走运了。
    • 要在不使用 Flex 的情况下使用它,您可以从 as3corelib 中的 DateUtil.as 中复制该方法并将其粘贴到您自己的类中:code.google.com/p/as3corelib/source/browse/trunk/src/com/adobe/…
    【解决方案2】:

    将 ISO 转换为日期格式的示例函数

        public function isoToDate(value:String):Date 
        {
            var dateStr:String = value;
            dateStr = dateStr.replace(/\-/g, "/");
            dateStr = dateStr.replace("T", " ");
            dateStr = dateStr.replace("Z", " GMT-0000");
    
            return new Date(Date.parse(dateStr));
        }
    

    【讨论】:

      【解决方案3】:

      这是一个实现:http://blog.flexexamples.com/2008/02/02/parsing-iso-dates-with-flex-and-actionscript/

      (抱歉ff只是没有显示链接按钮,我懒得自己做。)

      【讨论】:

      • Date.parse() 不适用于 ISO 格式。它将返回 null。
      • 到 flexexamples 博客的第二个链接更接近,尽管它只处理 UTC 以外的任何内容(并且仅在指定尾随“Z”而不是时区偏移时。感谢您帮助查看!
      猜你喜欢
      • 2021-12-15
      • 2015-12-26
      • 2019-02-11
      相关资源
      最近更新 更多