不同应用场景不同计算方式,这里只放些简单日常所需;
时间类的操作水太深(比如chrome和safari的时间格式不一样),复杂的操作可用插件来操作,插件已做了兼容性处理(各位亦可根据实际情况自己写写):
Moment.js目前版本:2.24.0
官网 github
JavaScript 日期处理类库,在javascript中解析,验证,操作和显示日期
Day.js github
Moment.js 的 2kB 轻量化方案,拥有同样强大的 API
Date的详细介绍
获取当前时间、日期
1 | Date.prototype.format = function(fmt) { |
距离现在时间差
日常用到的场景很多,比如:
- 文章新闻类的发布后面经常带着日期显示,如:刚刚、10分钟、一小时内、昨天、一周前、一个月前、一年前,或者抢购一周前提示,出发头一天提醒
- 到期类: 会员到期时间,比如2月28买的一个月会员,3月27到期,1月31买的一个月会员,2月28就到期了。 发布会倒计时,还有多少天,多少小时,多少秒
- 聊天对话框中:晚上6:20、周一 20:00、1月3日 中午12:31、2018年1月1日 晚上08:00
下面的逻辑就是用时间戳来算,要是用插件来的话就简单了,有现成的方法fromNow()或者from():moment(v).from( moment(now) )
1 | var now = new Date('2019-01-01 07:40:31'), |
时间格式转换
转时间戳
1 | console.log( new Date().valueOf() ) |
时间戳转日期
直接用 new Date(时间戳) 格式转化获得时间日期,每个浏览器的结果会有所不同,得再格式化一下
1 | new Date(1562577998147); |
日期的属性和方法
Date.prototype 方法
方法 | 描述 |
---|---|
getDate() | 根据本地时间返回指定日期对象的月份中的第几天(1-31) |
getDay() | 根据本地时间返回指定日期对象的星期中的第几天(0-6) |
getFullYear() | 根据本地时间返回指定日期对象的年份(四位数年份时返回四位数字) |
getHours() | 根据本地时间返回指定日期对象的小时(0-23) |
getMilliseconds() | 根据本地时间返回指定日期对象的毫秒(0-999) |
getMinutes() | 根据本地时间返回指定日期对象的分钟(0-59) |
getMonth() | 根据本地时间返回指定日期对象的月份(0-11) |
getSeconds() | 根据本地时间返回指定日期对象的秒数(0-59) |
getTime() | 返回从1970-1-1 00:00:00 UTC(协调世界时)到该日期经过的毫秒数,对于1970-1-1 00:00:00 UTC之前的时间返回负值。 |
getTimezoneOffset() | 返回当前时区的时区偏移 |
getUTCDate() | 根据世界时返回特定日期对象一个月的第几天(1-31) |
getUTCDay() | 根据世界时返回特定日期对象一个星期的第几天(0-6) |
getUTCFullYear() | 根据世界时返回特定日期对象所在的年份(4位数) |
getUTCHours() | 根据世界时返回特定日期对象当前的小时(0-23) |
getUTCMilliseconds() | 根据世界时返回特定日期对象的毫秒数(0-999) |
getUTCMinutes() | 根据世界时返回特定日期对象的分钟数(0-59) |
getUTCMonth() | 根据世界时返回特定日期对象的月份(0-11) |
getUTCSeconds() | 根据世界时返回特定日期对象的秒数(0-59) |
getYear() | 根据特定日期返回年份 (通常 2-3 位数). 使用 getFullYear() |
setDate() | 根据本地时间为指定的日期对象设置月份中的第几天 |
setFullYear() | 根据本地时间为指定日期对象设置完整年份(四位数年份是四个数字) |
setHours() | 根据本地时间为指定日期对象设置小时数 |
setMilliseconds() | 根据本地时间为指定日期对象设置毫秒数 |
setMinutes() | 根据本地时间为指定日期对象设置分钟数 |
setMonth() | 根据本地时间为指定日期对象设置月份 |
setSeconds() | 根据本地时间为指定日期对象设置秒数 |
setTime() | 通过指定从 1970-1-1 00:00:00 UTC 开始经过的毫秒数来设置日期对象的时间,对于早于 1970-1-1 00:00:00 UTC的时间可使用负值 |
setUTCDate() | 根据世界时设置 Date 对象中月份的一天 (1 ~ 31) |
setUTCFullYear() | 根据世界时设置 Date 对象中的年份(四位数字) |
setUTCHours() | 根据世界时设置 Date 对象中的小时 (0 ~ 23) |
setUTCMilliseconds() | 根据世界时设置 Date 对象中的毫秒 (0 ~ 999) |
setUTCMinutes() | 根据世界时设置 Date 对象中的分钟 (0 ~ 59) |
setUTCMonth() | 根据世界时设置 Date 对象中的月份 (0 ~ 11) |
setUTCSeconds() | 根据世界时设置 Date 对象中的秒钟 (0 ~ 59) |
setYear() | setYear() 方法用于设置年份。请使用 setFullYear() 方法代替 |
toDateString() | 以人类易读(human-readable)的形式返回该日期对象日期部分的字符串 |
toISOString() | 把一个日期转换为符合 ISO 8601 扩展格式的字符串 |
toJSON() | 使用 toISOString() 返回一个表示该日期的字符串。为了在 JSON.stringify() 方法中使用 |
toGMTString() | 返回一个基于 GMT (UT) 时区的字符串来表示该日期。请使用 toUTCString() 方法代替 |
toLocaleDateString() | 返回一个表示该日期对象日期部分的字符串,该字符串格式与系统设置的地区关联(locality sensitive) |
toLocaleFormat() | 使用格式字符串将日期转换为字符串 |
toLocaleString() | 返回一个表示该日期对象的字符串,该字符串与系统设置的地区关联(locality sensitive)。覆盖了 Object.prototype.toLocaleString() 方法 |
toLocaleTimeString() | 返回一个表示该日期对象时间部分的字符串,该字符串格式与系统设置的地区关联(locality sensitive) |
toSource() | 返回一个与Date等价的原始字符串对象,你可以使用这个值去生成一个新的对象。重写了 Object.prototype.toSource() 这个方法 |
toString() | 返回一个表示该日期对象的字符串。覆盖了Object.prototype.toString() 方法 |
toTimeString() | 以人类易读格式返回日期对象时间部分的字符串 |
toUTCString() | 把一个日期对象转换为一个以UTC时区计时的字符串 |
valueOf() | 返回一个日期对象的原始值。覆盖了 Object.prototype.valueOf() 方法 |