JS日期初始化及常见使用场景实例

一.日期初始化

1.new Date() 初始化日期为当前时间

var myDate = new Date();

 

2.new Date(ms) 根据毫秒初始化日期

var myDate = new Date(1137075575000);

 

3.new Date("yyyy/MM/dd") ,再使用正则表达式转换字符串日期;

var str ='2012-08-12 23:13:15';
str = str.replace(/-/g,"/");
var date = new Date(str );

 

4.new Date("month dd,yyyy");

new Date("January 12,2006");

 

5.new Date(yyyy,mth,dd,hh,mm,ss);

new Date(2006,0,12,22,19,35);

 

6.new Date(yyyy,mth,dd)

new Date(2006,0,12);

 

二.setFullYear、setMonth、setDate

setFullYear 方法可以单独设定年份,也可以同时设定年月日,参数为4位整数的年份。
setMonth 方法可以单独设定月份,也可以同时设定月和日,参数表示月份的数字,范围为0-11分别表示1-12月份。
setDate 方法只可设定日期,参数表示月中某一天的数字,范围为 1-31 分别表示月份中的 1-31 日。

 

三.JS计算日期相减天数

//计算日期相减天数 
function DateMinus(sDate){ 
  var sdate = new Date(sDate.replace(/-/g, "/")); 
  var now = new Date(); 
  var days = now.getTime() - sdate.getTime(); 
  var day = parseInt(days / (1000 * 60 * 60 * 24)); 
  return day; 
}

 

四.JS中获得指定日期前或后几天对应的日期

var d = new Date();
d.setDate(d.getDate() - 2);
console.log(d.toString());

// First of month
var c = new Date(2017,1,1); // 1 Feb -> 30 Jan
c.setDate(c.getDate() - 2);
console.log(c.toString());

// First of year
var b = new Date(2018,0,1); // 1 Jan -> 30 Dec
b.setDate(b.getDate() - 2);
console.log(b.toString());

 

五.js验证日期格式

1.方法一

function checkDate(str){
    var a = /^(\d{4})-(\d{2})-(\d{2})$/
    if (!a.test(str)) { 
        alert("日期格式不正确!");
        return false;
    }else {
        return true;
    }
}

  上面的方法是验证YYYY-MM-DD日期格式,不能验证“2012-11-45”之类的不正确的日期。

 

2.方法二

function checkDate(date) {
    var result = date.match(/((^((1[8-9]\d{2})|([2-9]\d{3}))(-)(10|12|0?[13578])(-)(3[01]|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))(-)(11|0?[469])(-)(30|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))(-)(0?2)(-)(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)(-)(0?2)(-)(29)$)|(^([3579][26]00)(-)(0?2)(-)(29)$)|(^([1][89][0][48])(-)(0?2)(-)(29)$)|(^([2-9][0-9][0][48])(-)(0?2)(-)(29)$)|(^([1][89][2468][048])(-)(0?2)(-)(29)$)|(^([2-9][0-9][2468][048])(-)(0?2)(-)(29)$)|(^([1][89][13579][26])(-)(0?2)(-)(29)$)|(^([2-9][0-9][13579][26])(-)(0?2)(-)(29)$))/);
    if(result==null) {
        alert("请输入正确的日期格式");
        return false;
    }
    return true;   
}

        这个方法验证的比较全面,能验证“2012-11-45”之类的不正确的日期。

        能达到同样效果的另外一种写法,如下所示:

function checkDate(date) {
    var result = date.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
    if (result == null) {
        return false;
    }
    var d = new Date(result[1], result[3] - 1, result[4]);
    return (d.getFullYear() == result[1] && (d.getMonth() + 1) == result[3] && d.getDate() == result[4]);
}

posted on 2017-08-27 20:16  bijian1013  阅读(1064)  评论(0)    收藏  举报

导航