习惯了用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)));