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)));

posted on 2012-07-27 14:05  江哥sama  阅读(3790)  评论(0编辑  收藏  举报

导航