We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
两个基础知识:
Date对象是JavaScript提供的日期和时间的操作接口。它可以表示的时间范围是,1970年1月1日00:00:00前后的各1亿天(单位为毫秒)。
Date()对象可以作为普通函数直接调用,无论有没有参数,总是返回当前时间。
Date()
new Date()
日期对象的创建,使用new操作符和Date构造函数:
var now = new Date();
作为构造函数,如果不加参数,会返回代表当前时间的对象:
var now = new Date(); console.log(now); // 2017-08-25T02:39:35.181Z
作为构造函数,Date()对象可以接收多种格式参数:
new Date(milliseconds)
Date对象接受从1970年1月1日00:00:00 UTC开始计算的毫秒数作为参数。这意味着如果将Unix时间戳(单位为秒)作为参数,必须将Unix时间戳乘以1000。
Date
Date构造函数的参数可以是一个负数,表示1970年1月1日之前的时间。
new Date(1378218728000) // Tue Sep 03 2013 22:32:08 GMT+0800 (CST) // 1970年1月2日的零时 var Jan02_1970 = new Date(3600 * 24 * 1000); // Fri Jan 02 1970 08:00:00 GMT+0800 (CST) // 1969年12月31日的零时 var Dec31_1969 = new Date(-3600 * 24 * 1000); // Wed Dec 31 1969 08:00:00 GMT+0800 (CST)
new Date(datestring)
Date对象还接受一个日期字符串作为参数,返回所对应的时间。所有可以被Date.parse()方法解析的日期字符串,都可以当作Date对象的参数。
new Date('January 6, 2013'); <!-- Date 2013-01-05T16:00:00.000Z -->
日期字符串的完整格式是“month day, year hours:minutes:seconds”,比如“December 25, 1995 13:30:00”。如果省略了小时、分钟或秒数,这些值会被设为0。
new Date(year, month [, day, hours, minutes, seconds, ms])
在多个参数的情况下,Date对象将其分别视作对应的年、月、日、小时、分钟、秒和毫秒。如果采用这种用法,最少需要指定两个参数(年和月),其他参数都是可选的,默认等于0。如果只使用年一个参数,Date对象会将其解释为毫秒数。
各个参数的取值范围为:
上面的参数如果超出了范围,那么将进行自动折算,比如月份为15,将折算为下一年的4月。
上面的参数如果为负数,表示从基准扣除的时间。
年份如果是0到99,会自动加上1900。比如,0表示1900年,1表示1901年;如果为负数,则表示公元前。
类型转换时,Date对象的实例如果转为数值,则等于对应的毫秒数;如果转为字符串,则等于对应的日期字符串。所以,两个日期对象进行减法运算,返回的就是它们间隔的毫秒数;进行加法运算,返回的就是连接后的两个字符串。
var then = new Date(1993, 11, 02); var now = new Date(2017, 8, 27); console.log(now - then); // 751680000000 console.log(now + then); // Wed Sep 27 2017 00:00:00 GMT+0800 (CST)Thu Dec 02 1993 00:00:00 GMT+0800 (CST)?
Date.now()
now方法返回当前距离1970年1月1日00:00:00的毫秒数(Unix时间戳乘以1000)。。
console.log(Date.now());
Date.parse()
parse方法用来解析日期字符串,返回距离1970年1月1日 00:00:00的毫秒数
日期字符串的格式应该完全或者部分符合YYYY-MM-DDTHH:mm:ss.sssZ格式,Z表示时区,是可选的
如果传入Date.parse()方法的字符串不能表示日期,返回NaN
默认情况下,Date对象返回的都是当前时区的时间。
Date.UTC()
返回UTC时间。该方法接受年、月、日等变量作为参数,返回当前距离1970年1月1日 00:00:00 UTC的毫秒数。
Date实例对象一般分为3类:
Date.prototype.toString()
返回一个完整的日期字符串。
var now = new Date(2017, 8, 27); console.log(now); // 2017-09-26T16:00:00.000Z console.log(now.toString()); // Wed Sep 27 2017 00:00:00 GMT+0800 (CST)
Date.prototype.toUTCString()
返回对应的UTC时间,也就是时区时间。
var now = new Date(2017, 8, 27); console.log(now); // 2017-09-26T16:00:00.000Z console.log(now.toUTCString()); // Tue, 26 Sep 2017 16:00:00 GMT
Date.prototype.toISOString()
返回对应时间的ISO8601写法。返回的也是UTC时区时间。
var now = new Date(2017, 8, 27); console.log(now); // 2017-09-26T16:00:00.000Z console.log(now.toISOString()); // 2017-09-26T16:00:00.000Z
Date.prototype.toJSON()
返回一个符合JSON格式的ISO格式的日期字符串,与toISOString方法的返回结果完全相同。
Date.prototype.toDateString()
返回日期字符串。
var now = new Date(2017, 8, 27); console.log(now); // 2017-09-26T16:00:00.000Z console.log(now.toDateString()); // Wed Sep 27 2017
Date.prototype.toTimeString()
返回时间字符串。
var now = new Date(2017, 8, 27); console.log(now); // 2017-09-26T16:00:00.000Z console.log(now.toTimeString()); // 00:00:00 GMT+0800 (CST)
Date.prototype.toLocaleDateString()
返回当地日期字符串。
var now = new Date(2017, 8, 27); console.log(now); // 2017-09-26T16:00:00.000Z console.log(now.toLocaleDateString()); // 2017-9-27
参考信息:《JavaScript 标准参考教程(alpha)》,by 阮一峰
小练习:
function getChIntv(datestr) { var targetDate = new Date(datestr); var curDate = new Date(); var offset = Math.abs(targetDate - curDate); var totalSeconds = Math.floor(offset / 1000); var second = totalSeconds % 60; var totalMinutes = Math.floor(totalSeconds / 60); var minute = totalMinutes % 60; var totalHours = Math.floor(totalMinutes / 60); var hours = totalHours % 24; var days = Math.floor(totalHours / 24); return targetDate.toLocaleDateString() + ' 距离现在:' + days + '天' + hours + '小时' + minute + '分钟' + second + '秒'; } var offectTime = getChIntv('2017, 7, 27'); console.log(offectTime); // 2017-7-27 距离现在:31天13小时2分钟3秒
function getChsDate(inputDate) { var dict = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十", "二十一", "二十二", "二十三", "二十四", "二十五", "二十六", "二十七", "二十八", "二十九", "三十", "三十一" ]; var arr = inputDate.split('-'); // 从'-'处把字符串分割成字符串数组 // [ '2017', '08', '27' ] var arrYear = arr[0].split(''); // 将年份分割成数组 // [ '2', '0', '1', '7' ] var strYear = ''; for (var i = 0; i < 4; i++) { strYear += dict[parseInt(arrYear[i])]; } var strMonth = dict[parseInt(arr[1])]; var strDate = dict[parseInt(arr[2])]; return strYear + '年' + strMonth + '月' + strDate + '日'; } var result = getChsDate('2017-08-27'); console.log(result);
function pastTime(inputTime) { var curTime = new Date(); var nowTime = curTime.getTime(); var offsetMinute = Math.floor((nowTime - inputTime) / 1000 / 60); var offsetTime; if (offsetMinute < 1) { offsetTime = '刚刚'; } else if (offsetMinute < 60) { offsetTime = offsetMinute + '分钟前'; } else if (offsetMinute < 1440) { offsetTime = Math.floor(offsetMinute / 60) + '小时前'; } else if (offsetMinute < 43200) { offsetTime = Math.floor(offsetMinute / 60 / 24) + '天前'; } else if (offsetMinute < 518400) { offsetTime = Math.floor(offsetMinute / 60 / 24 / 30) + '个月前'; } else { offsetTime = Math.floor(offsetMinute / 60 / 24 / 30 / 12) + '年前'; } return offsetTime; } var str = pastTime('1483200000000'); console.log(str);
The text was updated successfully, but these errors were encountered:
No branches or pull requests
两个基础知识:
Date对象是JavaScript提供的日期和时间的操作接口。它可以表示的时间范围是,1970年1月1日00:00:00前后的各1亿天(单位为毫秒)。
Date()
对象可以作为普通函数直接调用,无论有没有参数,总是返回当前时间。new Date()
构造函数日期对象的创建,使用new操作符和Date构造函数:
作为构造函数,如果不加参数,会返回代表当前时间的对象:
作为构造函数,
Date()
对象可以接收多种格式参数:new Date(milliseconds)
Date
对象接受从1970年1月1日00:00:00 UTC开始计算的毫秒数作为参数。这意味着如果将Unix时间戳(单位为秒)作为参数,必须将Unix时间戳乘以1000。Date构造函数的参数可以是一个负数,表示1970年1月1日之前的时间。
new Date(datestring)
Date对象还接受一个日期字符串作为参数,返回所对应的时间。所有可以被Date.parse()方法解析的日期字符串,都可以当作Date对象的参数。
日期字符串的完整格式是“month day, year hours:minutes:seconds”,比如“December 25, 1995 13:30:00”。如果省略了小时、分钟或秒数,这些值会被设为0。
new Date(year, month [, day, hours, minutes, seconds, ms])
在多个参数的情况下,Date对象将其分别视作对应的年、月、日、小时、分钟、秒和毫秒。如果采用这种用法,最少需要指定两个参数(年和月),其他参数都是可选的,默认等于0。如果只使用年一个参数,Date对象会将其解释为毫秒数。
各个参数的取值范围为:
上面的参数如果超出了范围,那么将进行自动折算,比如月份为15,将折算为下一年的4月。
上面的参数如果为负数,表示从基准扣除的时间。
年份如果是0到99,会自动加上1900。比如,0表示1900年,1表示1901年;如果为负数,则表示公元前。
日期的运算
类型转换时,Date对象的实例如果转为数值,则等于对应的毫秒数;如果转为字符串,则等于对应的日期字符串。所以,两个日期对象进行减法运算,返回的就是它们间隔的毫秒数;进行加法运算,返回的就是连接后的两个字符串。
Date对象的静态方法
Date.now()
now方法返回当前距离1970年1月1日00:00:00的毫秒数(Unix时间戳乘以1000)。。
Date.parse()
parse方法用来解析日期字符串,返回距离1970年1月1日 00:00:00的毫秒数
日期字符串的格式应该完全或者部分符合YYYY-MM-DDTHH:mm:ss.sssZ格式,Z表示时区,是可选的
如果传入
Date.parse()
方法的字符串不能表示日期,返回NaN默认情况下,Date对象返回的都是当前时区的时间。
Date.UTC()
返回UTC时间。该方法接受年、月、日等变量作为参数,返回当前距离1970年1月1日 00:00:00 UTC的毫秒数。
Date实例对象的方法
Date实例对象一般分为3类:
to类方法
Date.prototype.toString()
返回一个完整的日期字符串。
Date.prototype.toUTCString()
返回对应的UTC时间,也就是时区时间。
Date.prototype.toISOString()
返回对应时间的ISO8601写法。返回的也是UTC时区时间。
Date.prototype.toJSON()
返回一个符合JSON格式的ISO格式的日期字符串,与toISOString方法的返回结果完全相同。
Date.prototype.toDateString()
返回日期字符串。
Date.prototype.toTimeString()
返回时间字符串。
Date.prototype.toLocaleDateString()
返回当地日期字符串。
get类方法
set类方法
参考信息:《JavaScript 标准参考教程(alpha)》,by 阮一峰
小练习:
The text was updated successfully, but these errors were encountered: