Flex——字符串转日期函数

彭博 发布于 2012/03/09 12:23
阅读 400
收藏 0

自定义字符串转日期的函数,支持常用的丰富的日期格式

/**

* 字符串转成日期,支持格式:

* yyyyMMdd

* yyyyMMddHH

* yyyyMMddHHmm

* yyyyMMddHHmmss

* yyyy-MM-dd("-"作判断关键字)

* yyyy-MM-dd HH("-"作判断关键字)

* yyyy-MM-dd HH("-"作判断关键字)

* yyyy-MM-dd HH:mm ("-"作判断关键字)

* yyyy-MM-dd HH🇲🇲ss("-"作判断关键字)

* yyyy年MM月dd日("年"作判断关键字)

* yyyy年MM月dd日HH时("年"作判断关键字)

* yyyy年MM月dd日HH时mm分("年"作判断关键字)

* yyyy年MM月dd日HH时mm分ss秒("年"作判断关键字)

* MM/dd/yyyy(例如,"02/01/2005")

* MM/dd/yyyy HH🇲🇲ss

* MM/yyyy dd(例如,"02/2005 23")

* Day Month Date Hours:Minutes:Seconds GMT Year(例如,"Tue Feb 1 00:00:00 GMT-0800 2005",这与 toString() 一致)

* Day Month Date Year Hours:Minutes:Seconds AM/PM(例如,"Tue Feb 1 2005 12:00:00 AM",这与 toLocaleString() 一致)

* Day Month Date Year Hours:Minutes:Seconds(例如,"Tue Feb 1 2005 23:59:59")

* Day Month Date Year(例如,"Tue Feb 1 2005",这与 toDateString() 一致)

*/

public static function ParseDate(value:String):Date

{

    if (!value)

        return new Date();

    var year:Number;

    var month:Number;

    var date:Number;

    var h:Number = 0;

    var m:Number = 0;

    var s:Number = 0;

    var ms:Number = 0;

    /*

    * yyyyMMdd

    * yyyyMMddHH

    * yyyyMMddHHmm

    * yyyyMMddHHmmss

    */

    if(!isNaN(Number(value)) && value.length >= 8)

    {

        year = Number(value.substr(0, 4));

        month = Number(value.substr(4, 2)) -1;

        date = Number(value.substr(6, 2));

        if(value.length>=10)

            h = Number(value.substr(8, 2));

        if(value.length>=12)

            m = Number(value.substr(10, 2));

        if(value.length>=14)

            s = Number(value.substr(12, 2));

 

        return new Date(year, month, date,h,m,s,ms);

    }

    /*

    * yyyy-MM-dd("-"作判断关键字)

    * yyyy-MM-dd HH("-"作判断关键字)

    * yyyy-MM-dd HH("-"作判断关键字)

    * yyyy-MM-dd HH:mm ("-"作判断关键字)

    * yyyy-MM-dd HH🇲🇲ss("-"作判断关键字)

    * yyyy年MM月dd日("年"作判断关键字)

    * yyyy年MM月dd日HH时("年"作判断关键字)

    * yyyy年MM月dd日HH时mm分("年"作判断关键字)

    * yyyy年MM月dd日HH时mm分ss秒("年"作判断关键字)

    */

    if(value.indexOf("-")>0 || value.indexOf("年")>0)

    {

        var match:Array = value.match( //d+/g );

        year = Number(match[0]);

        month = Number(match[1]) -1;

        date = Number(match[2]);

        if(match.length>3)

            h = Number(match[3]);

        if(match.length>4)

            m = Number(match[4]);

        if(match.length>5)

            s = Number(match[5]);

        

        return new Date(year, month, date,h,m,s,ms);

    }

 

    /*

    * MM/dd/yyyy(例如,"02/01/2005")

    * MM/dd/yyyy HH🇲🇲ss

    * MM/yyyy dd(例如,"02/2005 23")

    * Day Month Date Hours:Minutes:Seconds GMT Year(例如,"Tue Feb 1 00:00:00 GMT-0800 2005",这与 toString() 一致)

    * Day Month Date Year Hours:Minutes:Seconds AM/PM(例如,"Tue Feb 1 2005 12:00:00 AM",这与 toLocaleString() 一致)

    * Day Month Date Year Hours:Minutes:Seconds(例如,"Tue Feb 1 2005 23:59:59")

    * Day Month Date Year(例如,"Tue Feb 1 2005",这与 toDateString() 一致)

    */

    return new Date(value);

}

 

测试通过的例子:

TestDate("20111213");

TestDate("2011121323");

TestDate("201112132359");

TestDate("20111213235959");

 

TestDate("2011-12-13");

TestDate("2011-12-13 23");

TestDate("2011-12-13 23:59");

TestDate("2011-12-13 23:59:59");

 

TestDate("2011年12月13日");

TestDate("2011年12月13日23时");

TestDate("2011年12月13日23时59分");

TestDate("2011年12月13日23时59分59秒");

 

TestDate("12/13/2011");

TestDate("12/13/2011 23:59:59");

TestDate("12/2011 23");

 

TestDate("Fri Dec 23 00:00:00 GMT+0800 2011");

TestDate("Fri Dec 23 23:00:00 GMT+0800 2011");

TestDate("Fri Dec 23 23:59:00 GMT+0800 2011");

TestDate("Fri Dec 23 23:59:59 GMT+0800 2011");

 

TestDate("Fri Dec 23 2011 12:00:00 AM");

TestDate("Fri Dec 23 2011 11:00:00 PM");

TestDate("Fri Dec 23 2011 11:59:00 PM");

TestDate("Fri Dec 23 2011 11:59:59 PM");

 

TestDate("Fri Dec 23 2011 00:00:00");

TestDate("Fri Dec 23 2011 23:00:00");

TestDate("Fri Dec 23 2011 23:59:00");

TestDate("Fri Dec 23 2011 23:59:59");

 

TestDate("Fri Dec 23 2011");


原文链接:http://blog.csdn.net/hunkcai/article/details/6246889
加载中
返回顶部
顶部