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) 收藏 举报
浙公网安备 33010602011771号