Date
嗯嗯,今天复习一下js中原生的Date对象~不不。。是预习。。。
翻了一下MDN,没错Date对象有一大坨方法,先不管那么多,先来了解一下构造方法:
四种用法:
-
new Date(): 默认是当前时间
-
new Date(value):value是时间戳
-
new Date(dateString):这个dateString比较多,不太好记忆,用到的时候试试就好啦,该字符串必须能被Date.parse()识别才行哦,不过文档上是不推荐在ES5之前使用的,因为哥浏览器实现差异大, 手动解析会更好一些。
-
new Date(year, month, day, hour, minutes, secondes, milliseconds)
Date拥有的方法众多,我觉得很有用的是几个get方法:
年:getFullYear()
月:getMoth() + 1 注意它从0开始的
日:getDate() 注意不是getDay, getDay返回的是星期中的第几天(0-6)
时:getHours()
分:getMinutes()
秒:getSeconds()
在处理日期的时候常常有format的需求,调研了一下moment.js感觉大而全,貌似简单的需求可以简单处理下,例如如下简单的扩展了Date类的方法:
Date.prototype.format = function(fmt) {
var times = {
"M": this.getMonth() + 1,
"d": this.getDate(),
"h": this.getHours(),
"m": this.getMinutes(),
"s": this.getSeconds()
};
var yearStr = this.getFullYear() + "";
fmt = fmt.replace(/(y+)/, function(match) {
return yearStr.slice(4 - match.length);
});
for(var key in times) {
var value = times[key] + "";
fmt = fmt.replace(new RegExp('('+ key +'+)'), function(match) {
if(match.length === 1) {
return value;
} else {
return value.length === 1 ? '0' + value : value;
}
});
}
return fmt;
};
console.log((new Date()).format("yyyy-MM-dd hh:mm:ss"));
console.log((new Date()).format("yy-M-d hh:mm:ss"));
原理也很清晰,主要是运用了正则表达式:年:(y+)\; 月:(M+)\;日:(d+)\;时:(h+)\;分:(m+)\;秒:(s+)\;和replace方法,对格式化的字符串进行了日期替换而得到相应格式的日期。