javascript实现PHP的strtotime,time,date函数

习惯了用PHP strtotime(),time(),date()的函数,发现JS的日期操作起来好麻烦,于是自己写了一个这三个函数的JS实现。

 

/**

 * 模仿PHP的strtotime()函数

 * strtotime('2012-07-27 12:43:43') OR strtotime('2012-07-27')

 * @return 时间戳

 */

function strtotime(str){

    var _arr = str.split(' ');

    var _day = _arr[0].split('-');

    _arr[1] = (_arr[1] == null) ? '0:0:0' :_arr[1];

    var _time = _arr[1].split(':');

    for (var i = _day.length - 1; i >= 0; i--) {

        _day[i] = isNaN(parseInt(_day[i])) ? 0 :parseInt(_day[i]);

    };

    for (var i = _time.length - 1; i >= 0; i--) {

        _time[i] = isNaN(parseInt(_time[i])) ? 0 :parseInt(_time[i]);

    };

    var _temp = new Date(_day[0],_day[1]-1,_day[2],_time[0],_time[1],_time[2]);

    return _temp.getTime() / 1000;

}

 

 

/**

 * 模仿PHP的time()函数

 * @return 返回当前时间戳

 */

function time(){

    return (new Date()).getTime() / 1000;

}

 

 

/**

 * 模仿PHP的date()函数

 * strtotime('Y-m-d H:i:s');

 * @param format 只支持 'Y-m-d H:i:s','Y-m-d','H:i:s' 三种调用方式

 * @param time 为空时,取当前时间

 * @return 日期格式化的字符串

 */

function date(format,time){

    var _temp = (time != null) ? new Date(time*1000) : new Date();

    var _return = '';



    if(/Y-m-d/.test(format)){

        var _day = [_temp.getFullYear(),addzero(1 + _temp.getMonth()),addzero(_temp.getDate())];

        _return = _day.join('-');

    }

    if(/H:i:s/.test(format)){

        var _time = [addzero(_temp.getHours()),addzero(_temp.getMinutes()),addzero(_temp.getSeconds())];

        _return += ' ' +_time.join(':');

    }

    return _return;

    function addzero(i){

        if(i<=9){

            return '0' + i;

        }else{

            return i;

        }

    }

}



//alert(date('Y-m-d H:i:s'));

//alert(date('Y-m-d'));



var str = '2012-01-06';

alert(str);

alert(date('Y-m-d H:i:s',strtotime(str)));

你可能感兴趣的:(JavaScript)