「这是我参与11月更文挑战的第4天,活动详情查看:2021最后一次更文挑战」
已经有很多好用的时间处理插件,但是有的时候并不想引入其他插件,这个时候就可以直接使用JS的内置日期对象Date来处理时间。下面一起来看看吧!
前言
👉 时间处理插件:moment.js的实用操作 / dayjs官方文档
👉 不定期补充......
Date
对象方法速查表
放在最前面便于日常取用🤗
关键词:获取
方法 | 描述 |
---|---|
getFullYear() | 获取年份(4 位数) |
getMonth() | 获取月份 (0 ~ 11)。 |
getDate() | 获取一个月中的某一天 (1 ~ 31)。 |
getHours() | 获取小时数 (0 ~ 23)。 |
getMinutes() | 获取分钟数 (0 ~ 59)。 |
getSeconds() | 获取秒数 (0 ~ 59)。 |
getMilliseconds() | 获取毫秒数(0 ~ 999)。 |
getDay() | 获取一周中的某一天 (0 ~ 6)。 |
getTime() | 获取与 1970 年 1 月 1 日之间的毫秒数。 |
🎨使用示例
:
let today = new Date();
today.getFullYear()
关键词:设置
方法 | 描述 |
---|---|
setFullYear(year, [month], [date]) | 根据本地时间为一个日期对象设置年份(4 位数) |
setMonth(month, [date]) | 根据本地时间为一个日期对象设置月份。 (0 ~ 11)。 |
setDate(date) | 根据本地时间为一个日期对象设置日期。(1 ~ 31)。 |
setHours(hour, [min], [sec], [ms]) | 根据本地时间为一个日期对象设置小时。 (0 ~ 23)。 |
setMinutes(min, [sec], [ms]) | 根据本地时间为一个日期对象设置分钟。(0 ~ 59)。 |
setSeconds(sec, [ms]) | 根据本地时间为一个日期对象设置秒数。(0 ~ 59)。 |
setMilliseconds(ms) | 根据本地时间为一个日期对象设置毫秒数。(0 ~ 999)。 |
setTime(milliseconds) | 根据本地时间为一个日期对象设置时间。(与 1970 年 1 月 1 日之间的毫秒数) |
🎨使用示例
:
let today = new Date();
today.setFullYear(2022); //结果是一个时间戳
💥注
:中括号[]的代表选填,如
dateObj.setFullYear(year, [month], [date])
- year:指定年份的整数值,例如1995。
- month:一个0到11之间的整数值,表示从一月到十二月。
- date:一个1到31之间的整数值,表示月份中的第几天。如果你指定了
date
参数,就必须同时指定month
。
如果没有指定 month
和date
参数,将会使用 getMonth
和getDate
方法的返回值。
创建
无参数
不带参数表示当前日期和时间的Date对象
let now = new Date()
一个参数
参数可以是时间戳,也可以是字符串
//时间戳
let Jan02_1970 = new Date(24 * 3600 * 1000);
//字符串
let date = new Date("2021-11-04");
传入的整数参数代表的是自 1970-01-01 00:00:00 以来经过的毫秒数,该整数被称为 时间戳。
多个参数
语法:new Date(year, month, date, hours, minutes, seconds, ms)
使用当前时区中的给定组件创建日期。只有前两个参数是必须的。
year
必须是四位数:2013
是合法的,98
是不合法的。month
计数从0
(一月)开始,到11
(十二月)结束。date
是当月的具体某一天,如果缺失,则为默认值1
。- 如果
hours/minutes/seconds/ms
缺失,则均为默认值0
。
以下设置或者获取的年、月、日、时、分、秒,规则都是这样
实用方法
Date.parse()
📖描述
:解析一个表示某个日期的字符串,并返回从1970-1-1 00:00:00 UTC 到该日期对象(该日期对象的UTC时间)的毫秒数。
📖格式要求
:字符串的格式应该为:YYYY-MM-DDTHH:mm:ss.sssZ
,其中:
YYYY-MM-DD
—— 日期:年-月-日。- 字符
"T"
是一个分隔符。 HH:mm:ss.sss
—— 时间:小时,分钟,秒,毫秒。- 可选字符
'Z'
为+-hh:mm
格式的时区。单个字符Z
代表 UTC+0 时区。
简短形式也是可以的,比如 YYYY-MM-DD
或 YYYY-MM
,甚至可以是 YYYY
。
Date.now()
📖描述
:返回自 1970 年 1 月 1 日 00:00:00 (UTC) 到当前时间的毫秒数。
dateObj.toJSON()
📖描述
: 返回一个 JSON 格式字符串
let date = new Date(); //Thu Nov 09 2017 18:54:04 GMT+0800 (中国标准时间)
let jsonDate = (date).toJSON(); //"2017-11-09T10:51:11.395Z"
let backToDate = new Date(jsonDate); //Thu Nov 09 2017 18:54:04 GMT+0800 (中国标准时间)
dateObj.valueOf()
📖描述
:从1970年1月1日0时0分0秒到该日期的毫秒数。
实际应用
获取当前时间(单位/秒)
Date.parse(new Date()) / 1000
日期转为时间戳
let date = new Date('2021-11-04');
//方案一
let time = Date.parse(date); //1635984000000
//方案二
let time = date.valueOf(); //1635984000000
//方案三
let time = date.getTime(); //1635984000000
获取之后的时间
🎨如
:获取距离指定时间两天之后的时间
🍇思路
,获取日期直接+2,在通过设置日期的方法修改日期。(获取和设置的方法可看最后的速查表)
let date = new Date(2021, 02, 01);
date.setDate(date.getDate() + 2);
console.log(date) //Wed Mar 03 2021 00:00:00 GMT+0800 (中国标准时间)
获取之前的时间
🎨如
:今天是4号,往前1天,则应该为3号
🍇思路
:从当前 date
时间中减去给定的天数
function getDateAgo(date, days) {
let dateCopy = new Date(date);
dateCopy.setDate(date.getDate() - days);
return dateCopy.getDate();
}
获取某月最后一天
🍒思路
:使用下个月创建日期,将零作为天数(day)传递,因为日期会自动进行调整。因此,当我们传递 0 时,它的意思是“一个月的第一天的前一天”,换句话说:“上个月的最后一天”
function getLastDayOfMonth(year, month) {
let date = new Date(year, month + 1, 0);
return date.getDate();
}
获取当前月份天数
🍑思路
:重点还是0的传递,获取本月最后一天即为当前月份的天数;
function mGetDate(month){
var date = new Date();
var year = date.getFullYear();
if(!month){
month = date.getMonth()+1;
}
var d = new Date(year, month, 0);
return d.getDate();
}
获取指定时刻时间戳
//把 Date 对象的日期部分转换为可读字符串
new Date().toDateString()
// " 23:59" 为指定获取时间戳的时间字符串,前面必须加一个空格
new Date().toDateString() + ' 23:59'
//获取时间戳
new Date(new Date().toDateString() + ' 23:59')
参考资料:
🎨【点赞】【关注】不迷路,更多前端干货等你解锁
往期推荐