Date 对象属性和方法
Date 对象
在 JavaScript 中, Date 对象用于处理日期和时间。
它提供了获取、设置日期时间等相关操作。
创建一个 Date 对象的方法:
- var date = new Date()
Date 对象与其实例的属性和方法:
// Object.getOwnPropertyDescriptors(Date): name : {value: "Date", writable: false, enumerable: false, configurable: true} length : {value: 7, writable: false, enumerable: false, configurable: true} prototype : {value: {…}, writable: false, enumerable: false, configurable: false} UTC : {writable: true, enumerable: false, configurable: true, value: ƒ} now : {writable: true, enumerable: false, configurable: true, value: ƒ} parse : {writable: true, enumerable: false, configurable: true, value: ƒ} // Object.getOwnPropertyDescriptors(Date.prototype): constructor : {writable: true, enumerable: false, configurable: true, value: ƒ} toString : {writable: true, enumerable: false, configurable: true, value: ƒ} toLocaleString : {writable: true, enumerable: false, configurable: true, value: ƒ} valueOf : {writable: true, enumerable: false, configurable: true, value: ƒ} Symbol(Symbol.toPrimitive) : {writable: false, enumerable: false, configurable: true, value: ƒ} getDate : {writable: true, enumerable: false, configurable: true, value: ƒ} getDay : {writable: true, enumerable: false, configurable: true, value: ƒ} getFullYear : {writable: true, enumerable: false, configurable: true, value: ƒ} getHours : {writable: true, enumerable: false, configurable: true, value: ƒ} getMilliseconds : {writable: true, enumerable: false, configurable: true, value: ƒ} getMinutes : {writable: true, enumerable: false, configurable: true, value: ƒ} getMonth : {writable: true, enumerable: false, configurable: true, value: ƒ} getSeconds : {writable: true, enumerable: false, configurable: true, value: ƒ} getTime : {writable: true, enumerable: false, configurable: true, value: ƒ} getTimezoneOffset : {writable: true, enumerable: false, configurable: true, value: ƒ} getUTCDate : {writable: true, enumerable: false, configurable: true, value: ƒ} getUTCDay : {writable: true, enumerable: false, configurable: true, value: ƒ} getUTCFullYear : {writable: true, enumerable: false, configurable: true, value: ƒ} getUTCHours : {writable: true, enumerable: false, configurable: true, value: ƒ} getUTCMilliseconds : {writable: true, enumerable: false, configurable: true, value: ƒ} getUTCMinutes : {writable: true, enumerable: false, configurable: true, value: ƒ} getUTCMonth : {writable: true, enumerable: false, configurable: true, value: ƒ} getUTCSeconds : {writable: true, enumerable: false, configurable: true, value: ƒ} getYear : {writable: true, enumerable: false, configurable: true, value: ƒ} setDate : {writable: true, enumerable: false, configurable: true, value: ƒ} setFullYear : {writable: true, enumerable: false, configurable: true, value: ƒ} setHours : {writable: true, enumerable: false, configurable: true, value: ƒ} setMilliseconds : {writable: true, enumerable: false, configurable: true, value: ƒ} setMinutes : {writable: true, enumerable: false, configurable: true, value: ƒ} setMonth : {writable: true, enumerable: false, configurable: true, value: ƒ} setSeconds : {writable: true, enumerable: false, configurable: true, value: ƒ} setTime : {writable: true, enumerable: false, configurable: true, value: ƒ} setUTCDate : {writable: true, enumerable: false, configurable: true, value: ƒ} setUTCFullYear : {writable: true, enumerable: false, configurable: true, value: ƒ} setUTCHours : {writable: true, enumerable: false, configurable: true, value: ƒ} setUTCMilliseconds : {writable: true, enumerable: false, configurable: true, value: ƒ} setUTCMinutes : {writable: true, enumerable: false, configurable: true, value: ƒ} setUTCMonth : {writable: true, enumerable: false, configurable: true, value: ƒ} setUTCSeconds : {writable: true, enumerable: false, configurable: true, value: ƒ} setYear : {writable: true, enumerable: false, configurable: true, value: ƒ} toDateString : {writable: true, enumerable: false, configurable: true, value: ƒ} toGMTString : {writable: true, enumerable: false, configurable: true, value: ƒ} toISOString : {writable: true, enumerable: false, configurable: true, value: ƒ} toJSON : {writable: true, enumerable: false, configurable: true, value: ƒ} toLocaleDateString : {writable: true, enumerable: false, configurable: true, value: ƒ} toLocaleTimeString : {writable: true, enumerable: false, configurable: true, value: ƒ} toTimeString : {writable: true, enumerable: false, configurable: true, value: ƒ} toUTCString : {writable: true, enumerable: false, configurable: true, value: ƒ}
Date 对象方法描述
方法 | 描述 |
---|---|
Date.parse( ) | 解析并返回日期和时间的字符串表示的内部毫秒表示日期。 |
Date.UTC( ) | 返回指定的毫秒表示UTC日期和时间。 |
Date.prototype 对象方法描述
方法 | 描述 |
---|---|
Date() | 返回今天的日期及时间。 |
getDate() | 按照本地模式返回指定日期是哪日。 |
getDay() | 按照本地模式返回指定日期是周几。 |
getFullYear() | 按照本地模式返回指定日期是哪一年。 |
getMilliseconds() | 按照本地模式返回指定日期是几毫秒。 |
getMinutes() | 按照本地模式返回指定日期是几分。 |
getMonth() | 按照本地模式返回指定日期的月份。 |
getSeconds() | 按照本地模式返回指定日期是几秒。 |
getTime() | 按照本地模式当前的格林威治时间。 |
getTimezoneOffset() | 以分钟为单位返回时间偏差。 |
getUTCDate() | 按照世界统一时间返回指定日期是几号。 |
getUTCDay() | 按照世界统一时间返回指定日期是周几。 |
getUTCFullYear() | 按照世界统一时间返回指定日的年份。 |
getUTCHours() | 按照世界统一时间返回指定日期是几时。 |
getUTCMilliseconds() | 按照世界统一时间返回指定日期的毫秒数。 |
getUTCMinutes() | 按照世界统一时间返回指定日期的分钟数。 |
getUTCMonth() | 按照世界统一时间返回指定日期的月份。 |
getUTCSeconds() | 按照世界统一时间返回指定日期的秒数。 |
setDate() | 按照本地模式设置日期。 |
setFullYear() | 按照本地模式设置年份。 |
setHours() | 按照本地模式设置小时。 |
setMilliseconds() | 按照本地模式设置毫秒数。 |
setMinutes() | 按照本地模式设置分钟数。 |
setMonth() | 按照本地模式设置月份。 |
setSeconds() | 按照本地模式设置秒数。 |
setTime() | 按照格林威治格式设置毫秒数。 |
setUTCDate() | 按照世界统一时间设置日期。 |
setUTCFullYear() | 按照世界统一时间设置年份。 |
setUTCHours() | 按照世界统一时间设置小时数。 |
setUTCMilliseconds() | 按照世界统一时间设置毫秒数。 |
setUTCMinutes() | 按照世界统一时间设置分钟数。 |
setUTCMonth() | 按照世界统一时间设置月份。 |
setUTCSeconds() | 按照世界统一时间设置秒数。 |
toDateString() | 返回日期的字符串。 |
toLocaleDateString() | 按照本地模式,返回日期的字符串。 |
toLocaleFormat() | 使用格式字符串,将日期转换为一个字符串。 |
toLocaleString() | 使用当前语言环境的约定将日期转换为一个字符串。 |
toLocaleTimeString() | 返回日期的“时间”部分作为一个字符串,使用当前语言环境的约定。 |
toSource() | 返回一个字符串代表一个等价的日期对象的来源,您可以使用这个值来创建一个新的对象。 |
toString() | 返回一个字符串代表指定的日期对象。 |
toTimeString() | 返回日期的“时间”部分以字符串形式。 |
toUTCString() | 使用通用时间约定,将日期转换为一个字符串。 |
valueOf() | 返回日期对象的原始值。 |
Date对象:封装一个时间点,提供操作时间的API。Date对象中封装的是从1970年1月1日0点至今的毫秒数。
创建Date对象的4种方式:
new Date(); // 创建当前时刻的日期与时间 new Date(value); // value:一个 Unix 时间戳(Unix Time Stamp),它是一个整数值,表示自1970年1月1日00:00:00 UTC(the Unix epoch)以来的毫秒数,忽略了闰秒。请注意大多数 Unix 时间戳功能仅精确到最接近的秒。 new Date(dateString); // dateString:表示日期的字符串值。该字符串应该能被 Date.parse() 正确方法识别(即符合 IETF-compliant RFC 2822 timestamps 或 version of ISO8601)。 new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]); // year // 表示年份的整数值。 0到99会被映射至1900年至1999年,其它值代表实际年份。 // monthIndex // 表示月份的整数值,从 0(1月)到 11(12月)!!!。 // day 可选 // 表示一个月中的第几天的整数值,从1开始。默认值为1。 // hours 可选 // 表示一天中的小时数的整数值 (24小时制)。默认值为0(午夜)。 // minutes 可选 // 表示一个完整时间(如 01:10:00)中的分钟部分的整数值。默认值为0。 // seconds 可选 // 表示一个完整时间(如 01:10:00)中的秒部分的整数值。默认值为0。 // milliseconds 可选 // 表示一个完整时间的毫秒部分的整数值。默认值为0。
日期分量:FullYear、Month、Date、Day、Hours、Minutes、Seconds、Milliseconds。
每一个日期分量都有一个get
和set
方法(除了Day没有set方法),分别用于获取和设置时间对象。日期的单位及范围:
年FullYear (无范围)
月Month (0~11, 0开始,没有12)
日Date (1~31, 和现实生活一样)
星期Day (0~6, 0是星期日,没有7)
时Hours (0~23. 0开始,没有24)
分Minutes (0~59)
秒Seconds (0~59)
毫秒MilliSeconds
Date 常用方法示例:
var oDate = new Date(); console.log('当前:',oDate.toLocaleString()) var getTime = oDate.getTime(); //格林威治时间 var y = oDate.getFullYear(); // 年份 var mon = oDate.getMonth()+1; //月份 var d = oDate.getDate(); //日期 var dw = oDate.getDay(); //星期几 var h = oDate.getHours(); //时 var m = oDate.getMinutes(); //分 var s = oDate.getSeconds(); //秒 var ms = oDate.getMilliseconds(); //毫秒 console.log('格林威治时间:',getTime) console.log('年份:',y) console.log('月份:',mon) console.log('日期:',d) console.log('星期:',dw) console.log('时:',h) console.log('分:',m) console.log('秒:',s) console.log('毫秒:',ms)
偶尔会用到的小方法:
// 不够两位数的补全, function setTen (num) { // 注意确保num是正整数再使用,例子中非正整数一律原样返回,请根据业务实际情况进行更谨慎判断 return num >= 0 && num < 10? '0'+ parseInt(num): num } // 传入星期几返回对应中文 function setDay (day) { // 注意day为0-6的数字!!!此处举例未对day判断 var week = ['日', '一', '二', '三', '四', '五', '六']; return week[day] } var oDate = new Date(); var mon = setTen(oDate.getMonth()+1); //月份 var d = setTen(oDate.getDate()); //日期 var w = setDay(oDate.getDay()); //星期几 var h = setTen(oDate.getHours()); //时 var m = setTen(oDate.getMinutes()); //分 var s = setTen(oDate.getSeconds()); //秒 console.log('月份:',mon) console.log('日期:',d) console.log('星期:',w) console.log('时:',h) console.log('分:',m) console.log('秒:',s)
获得指定日期之前或之后的某个时间点 ( Fri Jan DD YYYY hh:mm:ss GMT+0800 (中国标准时间) )
// 获得指定日期之前或之后的某个时间 function getAfterDate(d,i,type) { var t = new Date(d) //////////////////////////////////////////////////////////////////// // d (用于增减的日期) 合法参数:任何能被 new Date() 转化的日期 // i (增减数量) 合法参数:正负整数 与 0 // type (日期类型) 合法参数: // 年 : year、y、年 // 月 : month、mon、月 // 周 : week、w、周 // 日 : day、d、天、日 // 时 : hours、h、时、小时 // 分 : minutes、m、分、分钟 // 秒 : seconds、s、秒、秒钟 // 毫秒 : milliseconds、ms、毫秒 ///////////////////////////////////////////////////////////////////// if (type == 'year' || type == 'y' || type == '年') {return new Date(t.setFullYear(t.getFullYear() + i))} if (type == 'month' || type == 'mon' || type == '月') {return new Date(t.setMonth(t.getMonth() + i))} if (type == 'week' || type == 'w' || type == '周') {return new Date(t.setDate(t.getDate() + i*7))} if (type == 'day' || type == 'd' || type == '天'|| type == '日') {return new Date(t.setDate(t.getDate() + i))} if (type == 'hours' || type == 'h' || type == '时') {return new Date(t.setHours(t.getHours() + i))} if (type == 'minutes' || type == 'm' || type == '分' || type == '分钟') {return new Date(t.setMinutes(t.getMinutes() + i))} if (type == 'seconds' || type == 's' || type == '秒' || type == '秒钟') {return new Date(t.setSeconds(t.getSeconds() + i))} if (type == 'milliseconds' || type == 'ms' || type == '毫秒') {return new Date(t.setMilliseconds(t.getMilliseconds() + i))} return '参数有误' } console.log('now: ',new Date()) // 当前时间 console.log('y ',getAfterDate(new Date(),3,'年')) // 三年后 console.log('m ',getAfterDate(new Date(),3,'月')) // 三个月后 console.log('w ',getAfterDate(new Date(),3,'周')) // 三周后 console.log('d ',getAfterDate(new Date(),-3,'天')) // 三天前 console.log('h ',getAfterDate(new Date(),-1,'时')) // 一小时前 console.log('s ',getAfterDate(new Date(),-30,'分')) // 三十分钟前 console.log('m ',getAfterDate(new Date(),300,'秒')) // 三百秒钟后 console.log('ms ',getAfterDate(new Date(),3000,'ms')) // 三千毫秒后
获得指定日期之前或之后的某个时间点的本地时间格式 ( YYYY/MM/DD 上午 hh:mm:ss )
// 获得指定日期之前或之后的某个时间点的本地时间格式,各参数可先判空判值之类优化 function getAfterLocalDate(d,i,type) { //////////////////////////////////////////////////////////////////// // d (用于增减的日期) 合法参数:任何能被 new Date() 转化的日期 // i (增减数量) 合法参数:正负整数 与 0 // type (日期类型) 合法参数: // 年 : year、y、年 // 月 : month、mon、月 // 周 : week、w、周 // 日 : day、d、天、日 // 时 : hours、h、时、小时 // 分 : minutes、m、分、分钟 // 秒 : seconds、s、秒、秒钟 // 毫秒 : milliseconds、ms、毫秒 ///////////////////////////////////////////////////////////////////// var t = new Date(d) var yObj = {a:['year','y','年'],s:'setFullYear',g:'getFullYear'} var monObj= {a:['month','mon','月'],s:'setMonth',g:'getMonth'} var wObj = {a:['week','w','周'],s:'setDate',g:'getDate'} var dObj = {a:['day','d','天','日'],s:'setDate',g:'getDate'} var hObj = {a:['hours','h','时'],s:'setHours',g:'getHours'} var mObj = {a:['minutes','m','分','分钟'],s:'setMinutes',g:'getMinutes'} var sObj = {a:['seconds','s','秒','秒钟'],s:'setSeconds',g:'getSeconds'} var msObj = {a:['milliseconds','ms','毫秒'],s:'setMilliseconds',g:'getMilliseconds'} var nt = null var o = [yObj,monObj,wObj,dObj,hObj,mObj,sObj,msObj] o.forEach(function (v) { if ( v.a.indexOf(type) > 0) { nt = new Date(t[v.s](t[v.g]() + i)) } }) return nt.toLocaleString() } // 使用与上面示例相同 console.log('y ',getAfterLocalDate(new Date(),3,'年')) console.log('mon ',getAfterLocalDate(new Date(),3,'月')) console.log('w ',getAfterLocalDate(new Date(),3,'周')) console.log('d ',getAfterLocalDate(new Date(),-3,'日')) console.log('h ',getAfterLocalDate(new Date(),-1,'时')) console.log('s ',getAfterLocalDate(new Date(),-30,'分')) console.log('m ',getAfterLocalDate(new Date(),300,'秒')) console.log('ms ',getAfterLocalDate(new Date(),3000,'ms'))
自定义一个实例方法:
// 给Date的实例定义一个方法 Date.prototype.isExpired = function (d,i,type) { if (d === undefined || i === undefined || type === undefined ) { return '参数有误' } //////////////////////////////////////////////////////////////////// // d (用于增减的日期) 合法参数:任何能被 new Date() 转化的日期 // i (增减数量) 合法参数:正负整数 与 0 // type (日期类型) 合法参数: // 年 : year、y、年 // 月 : month、mon、月 // 周 : week、w、周 // 日 : day、d、天、日 // 时 : hours、h、时、小时 // 分 : minutes、m、分、分钟 // 秒 : seconds、s、秒、秒钟 // 毫秒 : milliseconds、ms、毫秒 ///////////////////////////////////////////////////////////////////// var t = new Date(d) var yObj = {a:['year','y','年'],s:'setFullYear',g:'getFullYear'} var monObj = {a:['month','mon','月'],s:'setMonth',g:'getMonth'} var wObj = {a:['week','w','周'],s:'setDate',g:'getDate'} var dObj = {a:['day','d','天','日'],s:'setDate',g:'getDate'} var hObj = {a:['hours','h','时'],s:'setHours',g:'getHours'} var mObj = {a:['minutes','m','分','分钟'],s:'setMinutes',g:'getMinutes'} var sObj = {a:['seconds','s','秒','秒钟'],s:'setSeconds',g:'getSeconds'} var msObj = {a:['milliseconds','ms','毫秒'],s:'setMilliseconds',g:'getFullYear'} var nt = null // 存储 t 增减后的时间点 var o = [yObj,monObj,wObj,dObj,hObj,monObj,sObj,msObj] o.forEach(function (v) { if ( v.a.indexOf(type) > 0 ) { nt = new Date(t[v.s](t[v.g]() + i)) // 获取相应时间点进行增减 } }) // 缺陷:参数d 和 this 都是 new Date() 时,对比只有极小几率相等,因为方法由调用到运行之间有时间差,有可能耗费了几毫秒或以上 return nt < this // 参数 d 时间点增减后 与 this 时间点对比 } var now = new Date() var oDate = new Date('2020/1/1 11:11:11') console.log('2020/1/1 11:11:11 的三年后早于当前时间吗? ',now.isExpired(oDate,3,'年')) console.log('2020/1/1 11:11:11 的九个月后早于当前时间吗?',now.isExpired(oDate,9,'月')) console.log('现在的三周后早于 2020/1/1 11:11:11 吗? ',oDate.isExpired(now,3,'周')) console.log('2020/1/1 11:11:11 的三天前早于当前时间吗? ',now.isExpired(new Date(),-3,'日')) console.log('现在的一个小时前早于 2020/1/1 11:11:11 吗? ',oDate.isExpired(now,-1,'时')) console.log('2020/1/1 11:11:11 的三十分钟前早于 2020/1/1 11:11:11 吗? ',oDate.isExpired(oDate,-30,'分')) console.log('现在的三百秒后早于 2020/1/1 11:11:11 吗? ',oDate.isExpired(new Date(),300,'秒')) console.log('现在的三千毫秒前早于 2020/1/1 11:11:11 吗?',oDate.isExpired(new Date(),-3000,'ms'))
JavaScript 中的三大对象 (本地对象、内置对象、 宿主对象)
本地对象
- Object 对象属性和方法
- String 对象属性和方法
- Array 对象属性和方法
- Date 对象属性和方法
- Number 对象属性和方法
- RegExp 对象属性和方法
- Function 对象属性和方法
- Boolean 对象属性和方法
- Error 对象属性和方法
内置对象
宿主对象