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>