我们可以先看时间大小的比较JS是如何实现的
我们可以根据js获取的时间戳来比较,时间戳越大,则时间越往后
获取时间戳常用的三种方法如下
date = Date.parse((new Date()));timestamp =(new Date()).valueOf();
newDate = (new Date()).getTime();
// 第一种:获取的时间戳是把毫秒改成000显示,计算时间差不准确
// 第二种和第三种是获取了当前毫秒的时间戳。
console.log(date)
console.log(timestamp)
console.log(newDate)
结果
1439359142000
14393591428121439359142812
在我们的需求中,总会有跟时间有关的东西,比如校验一个时间 不得小于后天之类的,如果你的需求类似,那么可以往下看了
首先我们先要将字符串形式的日期转换成日期对象,否则IE下可能会不支持的哟
var strTime="2015-08-08";date = new Date(strTime); // IE下不支持带有2015-08-08的日期转换,因此要替换成2015/08/08形式
newDate = new Date(strTime.replace(/-/g, "/"));
我们可以先看下转换后的日期对象
alert(date);alert(newDate);
那我们可以再看一下有关设置时间的方法
setDate() 方法用于设置一个月的某一天var d = new Date()
d.setDate(1)
console.log(d) 可知打印出来的是十天后的日期
setMonth() 顾名思义,设置月份,当然,也可以设置天数
d.setMonth(month,day),month必需。一个表示月份的数值,该值介于 0(一月) ~ 11(十二月) 之间。
var d2 = new Date()
d2.setMonth(d2.getMonth()+1,d2.getDate()+10)
console.log(d2) 可知打印出来的是一个月十天后的日期
setFullYear(year,month,day) 顾名思义,年,月,日都可以设置,强大的很
var d3 = new Date()
d3.setFullYear(d3.getFullYear()+1,d3.getMonth()+1,d3.getDate()+10)
console.log(d3)
下面是我自己写一个方法,计算时间前几天,前几月,前几年或后n天、月、年
function getDate(){
var D = new Date();
var startDate = formate(D, 0, -2, 10); 传入想要获取多少天,月,日之后或之前的参数
}
function formate(D, year, month, day) {
var realD = new Date(D);
year = year || 0;
month = month || 0;
day = day || 0;
realD.setFullYear(realD.getFullYear() + year,realD.getMonth() + month,realD.getDate() + day);
return [
realD.getFullYear(),
padStr(realD.getMonth() + 1),
padStr(realD.getDate())
].join('-');
}
function padStr(i){
return (i<10) ? '0' + i : '' + i;
}