在
开发和数据库有关的项目中,我们比较习惯年月日的方式来存储日期,比如:2005-12-22
但是,在Flash里,不能直接使用这样的字符串去构造一个Date实例,下面的内容摘取自Flex 3开发文档:
TZD: Time Zone Designation (TZD) 的形式始终为支持的格式
:
MM/DD/YYYY HH:MM:SS TZD
HH:MM:SS TZD Day Mon/DD/YYYY
Mon DD YYYY HH:MM:SS TZD
Day Mon DD HH:MM:SS TZD YYYY
Day DD Mon HH:MM:SS TZD YYYY
Mon/DD/YYYY HH:MM:SS TZD
YYYY/MM/DD HH:MM:SS TZD
GMT-HHMM
或
UTC-HHMM
,这表明小时和分钟偏移相对于格林尼治平均时(GMT,现也称通用时间 (UTC))。年月日之间可用正斜杠 (
/
) 或空格隔开,一定不要用短划线 (
-
) 隔开。下面是受支持的其它格式(可以包括这些格式的部分表示形式,即,只包括月、日和年)
public static function parse(date:String):Number
按照 UTC 将表示日期的字符串转换为一个数字,它等于自 1970 年 1 月 1 日起已经过的毫秒数。
解决方案
在解析字符串之前,应该优先将日期格式转换成YYYY/MM/DD格式
如,使用正则表达式
("1999-2-27").replace(/(\d{4})-(\d{1,2})-(\d{1,2})/, "$1/$2/$3");
也可以通过截取字符串的方式,都是比较简单的,这里就不举例了,可以参考http://stackoverflow.com/questions/3163/actionscript-3-fastest-way-to-parse-yyyy-mm-dd-hhmmss-to-a-date-object
实例,查看源代码