Javascript日期格式化,加减,相差多少天,js日期函数都在这里

Javascript日期格式化,加减,相差多少天,js日期函数都在这里

我写的例子里已经包含详细的使用方法,把以下代码保存为HTML运行即可看到效果。

<!doctype html>
<html lang="zh_CN">

<head>
    <meta charset="UTF-8">
    <meta name="renderer" content="webkit">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    
    <title>Javascript日期函数</title>
</head>


<body>

<div style="color:white;">
date_create 和 date_test 函数是本人编写,其它函数摘自互联网并小幅修改。<br>
author : https://blog.csdn.net/roadtotheexpert <br>
<br>
Javascript日期格式化,加减,相差多少天,js日期函数都在这里
</div>
        
<script>

function date_create(vals, date, fmt) { //  if( fmt ==  null ) 返回 Date 对象 else  返回 string
    if( !date ) {
        date = new Date();
    } else if( typeof(date) == 'string' ) { // date 等于字符串 yyyy-MM-dd
        date = new Date(date);
    }
        

    if( !vals )
        return date;

    var rg = 'smhdwM';
    var times = new Array(1000,60000,3600000,86400000,604800000);//兼容IE9
    var num = parseInt(vals);
    var c = vals.charAt( vals.length-1 );

    var i = rg.indexOf(c);
    if( i < 0 && times.length < i ) {
        i = 0;
    }

    if( i == times.length ) {
        date.setMonth(date.getMonth() + num);
    } else {
        date.setTime(date.getTime() + num * times[i]);
    }

    if( !fmt ) {
        return date;
    } else {
        return date_format(fmt, date); 
    }

    return date;
}

function date_format(fmt, date) { 
    if( !date ) {
        date = new Date();
    } else if( typeof(date) == 'string' ) { // yyyy-MM-dd
        date = new Date(date);
    }

    var o = { 
       "M+" : date.getMonth()+1,                 //月份 
       "d+" : date.getDate(),                    //日 
       "h+" : date.getHours(),                   //小时 
       "m+" : date.getMinutes(),                 //分 
       "s+" : date.getSeconds(),                 //秒 
       "q+" : Math.floor((date.getMonth()+3)/3), //季度 
       "S"  : date.getMilliseconds()             //毫秒 
   }; 
   if(/(y+)/.test(fmt)) {
           fmt=fmt.replace(RegExp.$1, (date.getFullYear()+"").substr(4 - RegExp.$1.length)); 
   }
    for(var k in o) {
       if(new RegExp("("+ k +")").test(fmt)){
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
        }
    }
   return fmt; 
}




//获取两个日期的相差日期数(differ 相差天数:1、相差小时数:2、相差分钟数:3、相差秒数:4)
function date_diff_s(firstDate, secondDate, differ) {
        //1)将两个日期字符串转化为日期对象
        var startDate = new Date(firstDate);
        var endDate = new Date(secondDate);
        return date_diff_d(startDate, endDate, differ);
}

function date_diff_d(startDate, endDate, differ) {
        //2)计算两个日期相差的毫秒数
        var msecNum = endDate.getTime() - startDate.getTime();
        //3)计算两个日期相差的天数
        var dayNum = Math.floor(msecNum /getDifferScale(differ));
        return dayNum;
}

     
//获取与毫秒数的转化比例(相差天数:1,相差小时数:2,相差分钟数:3,相差秒数:4)
function getDifferScale(value) {
    var format;
    //获取转化比(天数跟毫秒数的比例)
    if (value == 'd' ) {  //天
        format = parseFloat(24 * 60 * 60 * 1000);
    }
        //获取转化比(小时数跟毫秒数的比例)
    else if (value == 'h' ) { //小时
        format = parseFloat(60 * 60 * 1000);
    }
        //获取转化比(分钟数跟毫秒数的比例)
    else if (value == 'm') {
        format = parseFloat(60 * 1000);
    }
        //获取转化比(秒数跟毫秒数的比例)
    else if (value == 's') {  //秒
        format = parseFloat(1000);
    }
    return format;
}


</script>

<pre id='panel'>

</pre>


<script>
var br = '<br>';// \n
function date_test() {
    var curDate = date_create();
    var s = '';
    s += br + "获取当前时间" + br +"date_create()  = " + curDate  + br;
    s += br + "格式化当前时间" + br +"date_format('yyyy/MM/dd') = " +  date_format('yyyy/MM/dd') + br;
    s += br + "格式化指定时间" + br +"date_format('yyyy.MM.dd', date_create(0, '2020-12-09')) = " + date_format('yyyy.MM.dd', date_create(0, '2020-12-09')) + br;

    s += br + "当前时间减10秒" + br +"date_create('-10s', 0, 'hh:mm:ss')  = " +  date_create('-10s', 0, 'hh:mm:ss') + br;
    s += br + "当前时间加15分钟" + br +"date_create('15m')  = " +  date_format('hh:mm:ss', date_create('15m')) + br;
    s += br + "当前时间减1小时" + br +"date_create('-1h')  = " +  date_format('hh:mm:ss', date_create('-1h')) + br;
    s += br + "指定日期减20天" + br +"date_create('-20d', date)  = " +  date_format('yyyy-MM-dd', date_create('-20d', curDate)) + br;
    s += br + "指定日期加15天" + br +"date_create('15d', '2020-10-01')  = " +  date_format('yyyy-MM-dd', date_create('15d', '2020-10-01')) + br;
    s += br + "当前时间加两周" + br +"date_create('2w')  = " +  date_format('yyyy-MM-dd', date_create('2w')) + br;
    s += br + "当前时间加3月" + br +"date_create('3M')  = " +  date_create('3M', 0 ,'yyyy-MM-dd' ) + br;
    s += br + "指定日期减15天" + br +"date_create('-25d', '2020-10-01', 'yyyy-MM-dd hh:mm:ss')  = " + date_create('-25d', '2020-10-01', 'yyyy-MM-dd hh:mm:ss')  + br;

    s += br + "指定日期减15天" + br +"date_create('-25d', '2020-10-01', 'yyyy-MM-dd hh:mm:ss')  = " + date_create('-25d', '2020-10-01', 'yyyy-MM-dd hh:mm:ss')  + br;
    s += br + "计算两日期相差的分钟" + br +"date_diff_s('2020-12-09 10:12:00', '2020-12-09 10:42:00', 'm')  = " + date_diff_s('2020-12-09 10:12:00', '2020-12-09 10:38:00', 'm') + br;
    s += br + "计算两日期相差的小时" + br +"date_diff_s('2020-12-09', '2020-12-12', 'h')  = " + date_diff_s('2020-12-09', '2020-12-12', 'h') + br;

    s += br + "计算两日期相差的天数" + br +"date_diff_d(date1, date2, 'd')  = " + date_diff_d(date_create(0, ), date_create('-100h'), 'd') + br;

    document.getElementById('panel').innerHTML = s;
}


date_test();

</script>



</body>
</html>

猜你喜欢

转载自blog.csdn.net/RoadToTheExpert/article/details/112624422